《利用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能夠顯示轉換成其餘類型

數組和標量之間的計算

批量計算html

基本的索引和切片

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

花式索引

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

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

  • 一元ufuncpython

    • abs、fabs
    • sqrt平方根
    • square平方
    • exp指數
    • log、log十、log二、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的真值
  • 二元ufuncweb

    • 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全部元素的累計積
  • 用於布爾型數組的方法mongodb

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

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

    • 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)api

    • 一組數據和一組索引組成的一維數組
    • 當作是一個定長的有序字典
    • 能夠直接經過字典建立
    • 在數值運算中會自動對齊
    • 索引能夠經過直接賦值的方式修改
  • 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
  • 連續內存
相關文章
相關標籤/搜索