《利用Python進行數據分析: Python for Data Analysis 》學習隨筆


NoteBook of 《Data Analysis with Python》

3.IPython基礎

Tab自動補齊

  • 變量名
  • 變量方法
  • 路徑

解釋

  • ?解釋,
  • ??顯示函數源碼
  • ?搜索命名空間

%run命令

  • %run 執行所有文件
  • %run -i 訪問變量
  • Ctrl-C中斷執行
  • %paste可以粘貼剪切板的一切文本
  • 一般使用%cpaste因為可以改

鍵盤快捷鍵

魔術命令

  • %timeit 檢測任意語句的執行時間
  • %magic顯示魔術命令的詳細文檔
  • %xdel v 刪除變量,並清除其一切引用
  • 注冊超能雲(SuperVessel Cloud)(注冊網址:http://www.ptopenlab.com

4.Numpy基礎:數組和矢量計算

ndarray:多維數組對象

創建ndarray

  • np.array() #將輸入數據轉換成ndarray
  • np.asarray() #將輸入轉換成ndarray
  • np.zeros() zeros_like #全零數組
  • np.ones()ones_like #全一數組
  • np.empty()empty_like #創建數組只分配內存不賦值
  • np.arange() #返回 range版的ndarray
  • eye、identify #N*N單位矩陣

ndarray類型

  • int、uint8 16 32 64
  • float 16 32 64 128
  • complex 64 128 256 浮點數表示的復數
  • bool
  • object python對象類型
  • string_ 固定長度的字符串
  • unicode_ 固定長度的Unicode類型
  • astype可以顯示轉換成其他類型

數組和標量之間的計算

批量計算

基本的索引和切片

  • 數組切片是原始數據,對切片的任何修改都會直接修改原始數據
  • 若需要復制一個副本就需要顯示的復制.copy()
  • 訪問單個元素arr[0][2]=arr[0,2]
  • 注意區分1和:1 #前者表示第二行,后者表示到第一行
  • and or 在布爾型數據中無效

花式索引

  • 花式索引就是將數據復制到新數組中
  • 轉置 .T transpose swapaxes

通用函數ufunc:元素級數組函數

  • 一元ufunc

    • abs、fabs
    • sqrt平方根
    • square平方
    • exp指數
    • log、log10、log2、log1p對數
    • sign正負號
    • ceil大於等於該值的最小整數
    • floor小於等於該值的最大整數
    • rint四舍五入到最接近的整數
    • modf小數和整數部分分別返回
    • isnan布爾型數組返回NaN非數字
    • isfinite、isinf布爾型返回有窮和無窮
    • cos、sosh、sin、sinh、tan、tanh雙曲線三角函數
    • arc cos、sosh、sin、sinh、tan、tanh反三角
    • logical_not 計算not x的真值
  • 二元ufunc

    • add相加
    • subtract數組一減二
    • multiply相乘
    • divide、floor_divide除法,向下取整
    • power A B 計算A^B
    • maximum、fmax fmax會忽略NaN
    • minimum、fmin
    • mod求模
    • copysign將二數組的值的符號復制給第一個數組的值
    • greater、greater_equal、less、less_equal、equal、not_equal比較運算,產生布爾型,相當於>,>=
    • logical_and,logical_or,logical_xor & | ^

利用數組進行數據處理

  • 用數組表達式代替循環叫矢量化
  • numpy.where=x if condition else y
  • [(x if c else y)for x,y,z in zip(x,y,c)]=np.where(c,x,y)

數學和統計方法

  • 基本數組統計方法

    • sum 對數組中全部元素或某軸向的元素求和
    • mean 算術平均值
    • std、var 標准差和方差
    • min、max最大值和最小值
    • argmin、argmax最大最小元素的索引
    • cumsum所有元素的累計和
    • cumprod所有元素的累計積
  • 用於布爾型數組的方法

    • sum計算true的個數
    • any測試是否存在一個或多個true
    • all 檢測數組中是否所有值都是true
  • 排序

    • sort
    • np.sort返回是已排序的副本
  • 數組的結合運算

    • np.unique找出數組中的唯一值並返回已排序的結果
    • intersect1d(x,y)返回有序的公共元素結果
    • union1d(x,y)返回並集的有序結果
    • in1d(x,y)返回x的元素是否包含於y的布爾型數組
    • setdiff1d(x,y)返回集合的差,x中不在y中
    • setxor1d(x,y)異或存在某一但是不同時存在2者

數組文件的輸入和輸出

  • 二進制讀寫
    • np.save
    • np.load
    • np.savez將多個數組保存到一個壓縮文件中
  • 讀取文本文件
    • np.loadtxt
    • np.genfromtxt
    • np.savetxt

線性代數

  • 矩陣乘法
    • np.dot(x,y)=x.dot(y)
  • 常用函數
    • diag 返回矩陣的對角線元素,或將一維數組轉換成矩陣
    • cot矩陣乘法
    • trace對角線元素和
    • det 矩陣行列式值
    • eig特征值和特征向量
    • inv求逆
    • pinv計算矩陣的偽逆
    • qrQR分解
    • svd奇異值分解
    • solve Ax=b的解
    • lstsq Ax=b的最小二乘解
  • 隨機數生成
    • numpy.random
    • seed確定隨記生成數的種子
    • permutation返回一個序列的隨記排列或一個隨記排列的范圍
    • shuffle對一個序列直接隨記排列
    • rand產生均勻分布的樣本值
    • randint從給定的范圍內隨機選取整數
    • randn產生標准狀態分布的隨機值
    • binomial產生二項分布的樣本值
    • normal產生高斯分布的樣本值
    • beta產生B分布的樣本值
    • chisquare產生卡方分布的樣本值
    • gamma產生gamma分布的樣本值
    • uniform產生[0,1)均勻分布的樣本值

5.pandas入門

pandas數據結構介紹

  • Series (data,index=v)

    • 一組數據和一組索引組成的一維數組
    • 看成是一個定長的有序字典
    • 可以直接通過字典創建
    • 在數值運算中會自動對齊
    • 索引可以通過直接賦值的方式修改
  • DataFrame

    • 表格型的數據結構
    • 直接傳入由等長列表或np數組組成的字典
    • 可以指定列序列columns
    • 通過類似字典標記da.date或屬性da['date']的方式獲取一個列為Series(擁有原來df相同的索引)
    • 為不存在的列賦值時會創建一個新列
    • 嵌套字典的外層鍵作為列,內層作為行索引
    • 可以穿給DF的數據[二維ndarray、數組元組列表組成的字典、np的結構化數組、Series組成的字典、字典組成的字典、字典或Series組成的列表、列表或元組組成的列表、DF、np的MaskedArray]
    • index對象不可修改
  • index的方法和屬性:

    • append鏈接另外一個index產生新的index
    • diff計算差集得到一個index
    • intersection計算交集
    • union\isin計算是否包含在參數集合中的布爾型數組
    • delete刪除索引i出的元素並得到新的index
    • drop、insert、is_monotonic、is_unique、unique

基本功能

  • 重新索引reindex:創建一個適應新索引的新對象

  • reindex的method選項

    • ffill pad前向填充
    • bfill backfill后向填充
  • reindex函數的參數

    • index索引的新序列
    • method插值方式
    • fill_value替代缺失值的
    • limit向前向后的最大填充量
    • level、copy
  • drop刪除指定行或列data.drop('two')

  • 索引、選取、過濾

    • 利用標簽的索引和普通的索引不同
    • obj[val]選取單列或者多列(布爾型、切片、布爾型df有奇效)
    • obj.ix[val]選取單個行或者一組行
    • obj.ix[:,val]選取單個列或列子集
    • obj.ix[val1,val2] 同時選取行和列
    • xs方法根據標簽選取單行或者單列,並返回一個Series
    • icol、irow根據整數位置選取單行或者單列,並返回一個Series
    • get_value、set _value根據標簽選取設置單個值
  • 算術運算和數據對齊

    • 不重疊標簽NA
    • 算術方法中可以填充值
    • DF和Series可以運算,沿行進行廣播
    • apply方法可以將函數運用到列或行形成的一維數組上
    • applymap,Series.map
  • 排序

    • sort_index默認是行索引升序(axis=1)列索引升序ascending=False降序
    • 按值對Series進行排序order,缺失值都在末尾
    • 給sort_index的by傳名稱即可按照相應的名字排
  • 排名.rank()

    • 與排序對比會增設一個排名值
    • 相同名次以method解決
    • average默認平均化
    • min、max、first
  • 索引也可以是重復的

匯總和計算描述統計

  • 規約方法
    • axis df行用0,列用1
    • skipna跳過na值,默認是True
    • level層次化索引就根據level分組規約
    • describe返回多個列匯總信息

count、describe、min、max、argmin、argmax、idxmin、idxmax、quantile、sum、mean、median、mad、var、std、skew、kurt、cumsum、cummin、cummax、cumprod、diff、pct_change

  • 相關系數和協方差
    • 3.x只保留了一個 items() 方法
    • Series中corr用於計算相關系數[重疊、非NA、索引對齊]
    • cov計算協方差
    • df的cov、corr會返回完整的矩陣
    • df的corrwith計算其列或行和另一個Series或df
    • unique.sort()返回一組唯一值有序數組
    • value_counts()返回一個Series各值出現的頻率,pd.

處理缺失數據

  • NA處理方法
    • dropna、fillna
    • isnull、notnull
  • 過濾缺失數據
    • dropna返回一僅含非空數據和索引值的Series=data.notnull();對於df會丟棄任何含有na的行,傳入how='all'只丟棄全為NA的行;丟棄列則傳入axis=1
    • thresh參數
  • 填充缺失數據
    • fillna方法參數
      • value用於填充的值或字典對象
      • method填充方法,默認ffill
      • axis默認0即行,axis=1為列
      • inplace是否產生副本
      • limit填充最大連續數量

層次化索引

  • 能以低維度形式處理高維度數據
  • 可以通過unstack方法重新排到一個df中[stack逆運算]
  • 還可以為軸標簽指定名稱
  • 重排分層排序
    • swaplevel可以交換兩個層級並返回新的
    • sortlevel
  • df將一個列或多個當做行索引
    • set_index(['c','d'),drop=False)
    • reset_index()

pandas的其他話題

  • 整數索引
    • Series的iget_value
    • df的irow和icol
  • Panel數據
    • Panel中的每一項都是一個df
    • df有to_ panel方法[逆運算是to_frame]

6.數據加載存儲和文件格式

讀取文本格式的數據

  • pandas解析函數
    • read_csv從文件、url、文件型對象加載帶分隔符的對象,默認分隔符是逗號,
    • read_table同上,默認分隔符是制表符\t;指定分隔符sep=','=read_csv
    • read_fwf讀取定寬列格式數據
    • read_clipboard讀取剪切板數據
  • read_csv/read_table
    • 可以指定索引和列名,也可傳入列名列表做成多層索引
    • 當處理不固定分隔符時使用正則表達式來作為分隔符
    • skiprows跳行
    • na_values接收用於表示缺失值的字符串

函數參數:path、sep|delimiter、header、index_col、names、skiprows、na_values、comment、parse_dates、keep_date_col、converters、dayfirst、date_parser、nrows、iterator、chunksize、skip_footer、verbose、encoding、squeeze、thousands

  • 逐塊讀取文本文件
    • nrows指定讀取幾行
    • chunksize指定逐塊讀取的大小
  • 將數據寫出到文本文件
    • to_csv可以指定分隔符[from_csv]
    • 缺失值默認是空字符串,可以通過na_rep指定標記值
    • 默認會輸出行列索引,可以通過index=False,header=False禁用
    • 也可以只輸出部分列
  • 手動處理分隔符格式
    • csv
  • JSON 數據
    • json.load加載json數據
    • json.dump轉換為json對象
    • pandas.to_json[from_json]
  • XML、HTML
    • findall和XPath
    • py2.x中的urllib2 =py3.x 中的urllib.request
    • The StringIO and cStringIO modules are gone. Instead, import the io module and use io.StringIO or io.BytesIO for text and data respectively.
    • ixml.objectify解析xml

二進制數據格式

  • pandas.save和pandas.load 讀寫pickle形式數據
  • HDF5格式(hierarchical data format層次數據格式)
    • python中有兩個接口PyTables&h5py
    • 處理海量數據要好好研究這兩個接口
    • pd.ExcelFile讀取Excel文件

使用HTML和Web API

  • json、request
  • df便於分析

使用數據庫

In python 2, zip returned a list. In python 3, it returns an iterable object. But you can make it into a list just by calling list on it.
list(zip(*ngram))[0]=zip(*nagram)[0]

存取MongoDB的數據

7.數據規整化:清洗、轉換、合並、重塑

合並數據集

  • pandas內置方法合並

    • pandas.merge根據一個或多個鍵連接不同的df,實現數據庫的連接操作
    • pandas.concat沿一條軸合並多個對象
    • combine_first將重復數據接在一起
  • pd.merge(df1,df2,on='key')

    • 不指定哪個列進行連接,默認是重疊的列名進行連接
    • 兩個對象的列名不同可以分別指定
    • 默認情況merge是how='inner'結果中的鍵是交集,outer是並集,還有left、right
    • 多對多連接產生的是行的笛卡爾積
    • 要對多個鍵進行合並傳入一個鍵的列表即可
    • merge函數參數
      • left、right、how、on、left_on、right_on
      • left_index、right_index、sort、suffixes、copy
  • 索引上的合並

    • 層次索引必須以列表的形式指明用作合並鍵的多個列
    • df.join按索引實現合並並且合並多個帶有相同或相似的df對象;還可以傳入一組df
  • 軸向連接

    • concat默認在axis=0工作,將值和索引連接到一起
    • 如果傳入axis=1則結果會變成一個df
    • concat函數參數
      • objs參與連接的pd對象的列表或字典,唯一必須參數
      • axis、join、join_axes、keys、levels
      • names、verify_integrity、ignore_index
  • 合並重疊數據

    • np.where&pd.combine_first

重塑reshape和軸向旋轉pivot

  • 重塑層次化索引
    • stack 列-->行 df-->Series 默認濾除缺失值
    • unstack 行-->列 Series-->df
  • 將長格式轉換成寬格式
    • pivot

數據轉換

  • 移除重復數據
    • df.duplicated()返回一個布爾型Series表示是否重復行
    • drop_duplicates返回一個移除了重復行的df;默認是判斷全部列,也可以指定列;默認保留第一個值,也可以保留最后一個
  • 利用匿名函數或映射進行數據轉換
    • map&lambda
  • 替換值
    • replace
  • 重命名軸索引
    • map直接修改原始數據,rename創建數據集的轉換版[可以結合字典實現對部分軸索引的修改],也可inplace=True修改原數據
  • 離散化和面元划分
    • 離散化函數pd.cut&pd.qcut
  • 檢測和過濾離群值
    • np.random.permutation
    • df.take
  • 計算指標/啞變量
    • 將分類變量轉換為虛擬矩陣或指標矩陣
    • pd.get_dummies(prefix加前綴)結合cut

字符串操作

  • 字符串對象方法
    • split()結合strip(修剪空白符,換行符)
    • '::'.join()
    • find[找不到返回-1]和index[找不到會引發異常]
    • count返回子字符串出現的次數
    • replace將指定字符替換成指定字符,刪除就替換空字符
    • 內置字符串方法
      • count、endswith、startswith、join、index、find、rfind、replace、strip、rstrip、lstrip、split、lower、upper、ljust、rjust
  • 正則表達式
    • 通過re.compile創建regex對象可以節省大量時間如果對許多字符串應用同一個正則表達式
    • findall返回所有匹配項的列表,finditer逐個迭代返回
    • search返回第一個匹配項
    • match從字符串起始位置開始匹配,返回第一個,否則None
    • sub將匹配到的替換成指定字符串,並返回新的字符串subn前n個
    • re.IGNORECASE忽略大小寫
    • split將匹配到的拆分成數段
  • pandas中矢量化的字符串函數
    • 獲取矢量化的元操作:str.get;str[]
    • 矢量化的字符串方法
      • cat、contains、count、endswith、startswith、findall、get、join、len、lower、upper、match、pad、center、repeat、replace、slice、split、strip、rstrip、lstrip

8.繪圖和可視化

matplotlib入門

  • matplotlib的實例庫和文檔是成為繪圖高手的最佳資源
  • Figure & Subplot
    • matplotlib的圖像都位於Figure對象中
    • pyplot.subplots的參數
      • nrows、ncols、sharex、sharey、subplot_kw、 **fig_wk
      • subplots_adjust調整圖像間距
  • 顏色、標記和線型
    • plot(linestyle=、color=)常用顏色有縮寫,任意RGB
    • 轉折點的標記marker=o;drawstyle插值繪圖方式
  • 刻度、標簽和圖例
    • 設置刻度和刻度標簽
      • set_xticks選擇要設置刻度的位置
      • ser_xticklables就是設置刻度的標簽
      • set_xlable設置軸標簽
      • set_title設置標題
    • 添加圖例
      • 在添加subplot的時候傳入lable
      • ax.legend|plt.legend(loc='best')自動選一個最好的地方
  • 注解或在Subplot上繪圖
    • 注解可以通過text、arrow、annotate添加
    • text可以文本繪制在指定坐標
    • 在圖表上添加一個圖形,需要先創建一個塊對象shp然后通過ax.add_oatch(shp)將其添加到subplot中
  • 圖片保持Figure.savefig
    • fname、dpi、facecolor、edgecolor、format、bbox_inches
  • matplotlib配置
    • plt.rc函數配置,第一個參數是要配置的對象

pandas中的繪圖函數

  • 線形圖
    • Series.plot方法默認就是線形圖
      • label、ax、style、alpha、kind、logy、use_index、rot、xticks、yticks、xlim、ylim、grid
    • df.plot會在一個subplot中為各列繪制一條線並自動創建圖例
      • subplots、sharex、sharey、figsize、title、legend、sort_columns
    • 要更深入需要多學matplotlib API
  • 柱狀圖
    • kind='bar'垂直|kind='barh'水平
    • Series索引會被用作刻度=df.行索引,列索引會作分組
    • stacked=True堆積柱狀圖
  • 直方圖和密度圖
    • hist生成直方圖
    • plot kind='kde'生成密度圖
    • 二者通常一起使用
  • 散布圖
    • plt.scatter觀察兩個一維數據序列之間的關系
    • pd.scatter_matrix散布圖矩陣
    • basemap地圖插件
    • 圖形庫mayavi

9.數據聚合與分組運算

GroupBy分組

  • split-apply-combine
  • 分組鍵中的缺失值可以使結果包含在NA組了吧
  • 對分組進行迭代
  • 選取一個或一組列
  • 通過字典或Series分組,索引和分組軸要對齊
  • 通過函數進行分組
  • 將函數、數組、列表、字典、Series混合使用進行分組
  • 根據索引級別分組[層次化索引]

數據聚合:從數組產生標量值的數據轉換過程

  • 如果要使用自己的聚合函數,傳入aggregate和agg方法

  • 非聚合運算的describe方法也可用

  • 優化過的GroupBy方法

    • count、sum、mean、median、std、var、min、max、prod、first、last
  • 面向列的多函數應用

    • 不同的列使用不同的函數或一次應用多個函數
    • 如果傳入的是函數或者函數名,相應的列就會以函數名命名
    • 如果傳入的是元組(name,function)就會以第一個參數名命名
    • 如果要對不同的列使用不同的函數,那么就向agg傳入一個從列名映射到函數的字典
  • as_index=False結果返回是無索引的

數組運算和轉換

  • groupby的transform方法,會將一個函數運用到各個分組
  • apply:一般性的'拆分-應用-合並'
  • group_keys=False禁止分組鍵
  • 分位數quantile和桶bucket分析

透視表和交叉表

  • 透視表pivot table根據一個或多個鍵並根據行、列鍵將數據分配到各個舉行區域里
    • pd.pivot_table|df.pivot_table參數
      • margins=True aggfunc= 、values、index、columns、fill_value
  • 交叉表crosstab:用於計算分組頻率的特殊透視表
    • crosstab前兩參數可以是數組、Series、數組列表

關於basemap的種種問題

  • geos始終無法安裝好
  • basemap無法直接安裝whl也安裝不了
  • win10 64 py3.5

時間序列

日期和時間數據類型及工具

  • datetime、time、calendar
  • date.timedelta表示兩個datetime對象之間的時間差
  • 字符串和datetime之間的相互轉換
    • str和strftime可以將datetime轉換成字符串
    • datetime.strptime可以將格式化字符串裝換成datetime對象;解析已知格式
    • dateutil包的parser.parse方法解析所有格式;實用但不完美
    • datetime格式定義
      • %Y 四位數年 %y %m %d 兩位數
      • %H 24H制 %I 12H制 %M %S
      • %w 星期幾[0,6] %U 每年的第幾周,星期天為界,%W,星期一為界
      • %z UTC時區偏移量 %F Y-m-d %D m/d/y
    • 特定於當前環境的
      • %a 星期幾簡稱、%A星期全稱
      • %b月份簡稱 %B
      • %c完整日期和時間 %p am,pm
      • %x適合於當前地區的日期格式,%X時間格式

時間序列基礎

  • pd最基本的時間序列就是以時間戳為索引的Series
  • 索引、選取、子集構造
    • 傳入可以被解析成日期的字符串
    • 傳入年、月即可選取數據切片
    • 可以使用字符串日、datetime、Timestamp
    • 對非唯一時間戳進行聚合使用groupby

日期的范圍、頻率、移動

  • resample將時間序列轉換成一個具有固定頻率的時間序列
  • pd.date_range會生成指定長度的daretimeindex
  • 時間序列的基礎頻率
    • D日歷日 B工作日 H T分 S WOM每月的星期幾
  • 移動數據 pd.shift

時區處理

  • pytz包
  • 本地化和轉換
    • tz_localize、tz_convert轉換到別的時區
    • Timestamp對象的轉換
    • 不同時區之間的運算
  • 時期及其算術運算
    • 時期的頻率轉換
    • 按季度計算的時期頻率
      • to_timestamp
    • 將Timestamp轉換成Period[or相反]
      • to_period方法
    • 通過數組創建PeriodIndex

重采樣和頻率轉換

  • 重采樣resample是指將時間序列從一個頻率轉換到另外一個頻率
    • 降采樣、升采樣,非降非升采樣
    • 方法參數
      • freq、how、axis、fill_method、closed、label、loffset、limit、kind、convention
      • OHLC重采樣,open、high、low、close
      • 通過groupby進行重采樣
    • 升采樣和插值
    • 通過時期進行重采樣

時間序列繪圖

  • pd時間序列的繪圖功能比mt好
  • 移動窗口函數rolling_mean
  • 用戶自定義移動窗口函數rolling_apply,能從片段中產生單個值

性能和內存使用的注意事項

  • pandas對數據對齊和重采樣進行了高度優化
  • 規則頻率之間的轉換優化

金融和經濟數據應用

數據規整方面

  • 時間序列以及截面對齊
    • pandas可以在算術運算中自動對齊數據
    • 通過一組不同索引的Series構建df
  • 頻率不同的時間序列的運算
    • 頻率轉換resample和重對齊reindex
    • 使用Period索引的兩個不同頻率的時間序列之間的運算必須進行顯示轉換
  • 時間和當前數據選取
    • at_time、between_time
    • 將Timestamp傳入asof可以得到時間點最近的值(若是na的話)
  • 拼接多個數據源
    • pd.concat
    • df.combine_first

分組變換和分析

  • 分組因子暴露
    • 因子分析是投資組合定量管理的一種技術
  • 十分位和十分位分析
    • 基於樣本分位數的分析

NumPy高級應用

ndarray對象的內部機制

  • numpy數據類型體系

高級數組操作

  • 向數組的reshape傳入一個表示新形狀的元組即可
    • 扁平化|散開
  • C[行優先&內存相鄰]和Fortran[列優先&內存相鄰]順序
  • order='C' || order='F'
  • 數組的拆分和合並
    • np.concatenate可以指定軸將一個數組序列(元組或列表等)連接到一起
    • 比較方便的是np.vstack|np.hstack
    • np.split將數組沿指定軸拆分為多個數組
    • concatenate、vstack、row_stack、hstack、column_stack、dstack、split、hsplit、vsplit、dsplit
    • r_、c_
  • 元素的重復操作tile&repeat
  • 花式索引的等價函數take&put
    • take可以使用axis put只能按C順序

廣播

  • 后緣維度的軸長相符,其中一方長度為1
  • 沿其他軸向廣播
  • 利用廣播機制設置數組的值

ufunc高級應用

  • ufunc實例方法
    • reduce、accumulate、reduceat、outer
  • 自定義ufunc
    • np.frompyfunc接收一數組個函數及參數

結構化和記錄式數組

  • 定義結構化dtype,使用元組列表,字典式訪問
  • 嵌套dtype和多維字段

和排序有關的話題

  • ndarray的sort實例方法是直接排序,原始數據會消失
  • 而np.sort會創建一個已排序的副本,還可以指定排序軸
    • 二者都無法設置為降序
  • 間接排序:argsort、lexsort
  • python對象數組只能用快排排序
  • np.searchsorted在有序數組中查找元素,返回位置坐標
  • Numpy的Matrix類

高級輸入輸出

  • 內存映像文件可以處理內存放不下的大文件
  • np.memmap會將大文件分成小段來讀寫

性能建議

  • 將python的循環和邏輯轉換成數組運算和布爾數組運算
  • 多用廣播
  • 多使用數組切片避免復制數據
  • 使用ufunc
  • 考慮Cython
  • 連續內存


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM