本書2017年10月20日出版,英文名為《Python for Data Analysis, 2nd Edition》,英文在線:pydata-book
中文在線:http://www.lxweimin.com/p/a380222a3292
本系列讀書筆記基本只是簡略記下書中要點(diǎn),引用圖片包括大部分來自中文鏈接博客,少量自己用IPython運(yùn)行截圖;僅作為在遺忘時翻閱之用。
4.1 ndarry / 多維數(shù)組對象
主要內(nèi)容:
%time 和 %timeit
np.random.randn 和 np.random.rand
不建議使用from numpy import *
arr.shape 表示維度大小的元祖
arr.dtype 數(shù)組數(shù)據(jù)類型
np.array(XXX) 創(chuàng)建ndarray對象,單序列→numpy數(shù)組,嵌套序列→多維數(shù)組
arr.ndim 數(shù)組arr維度值
一般np.array會嘗試為新建的數(shù)組推斷出一個合適的數(shù)據(jù)類型(dtype)
np.zeros(X) np.zeros((X,Y)) 下同 np.ones np.empty
np.empty大多數(shù)情況返回的是未初始化的垃圾值,而非全0
np.arange(X)
np.asarray(X)
np.ones_like(X) np.zeros_like(X) np.empty_like(X)
np.full np.full_like
np.eye(X) np.identity(X)
arr.astype(np.float64) 轉(zhuǎn)換dtype 浮點(diǎn)數(shù)轉(zhuǎn)換整數(shù)小數(shù)部分會被截取
astype也可以將數(shù)字字符串列表轉(zhuǎn)換為數(shù)字列表,如
np.array(['1.25', '-9.6', '42'], dtype=np.string_) → array([ 1.25, -9.6 , 42. ])
維度相等的數(shù)組之間的任何算術(shù)運(yùn)算都將應(yīng)用到元素級
數(shù)組與標(biāo)量運(yùn)算會將標(biāo)量值傳播到各個元素
維度相等的數(shù)組之間的比較大小會生成布爾數(shù)組
切片
將一個標(biāo)量值賦值給一個切片,該值會自動傳播到整個選區(qū)
數(shù)組切片是原始數(shù)組的視圖,視圖上的任何改變都會直接反映到數(shù)組上
arr.copy() 創(chuàng)建一份數(shù)組arr的副本而非視圖
axis = 0 對行處理
高維數(shù)組切片
布爾型索引
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
data = np.random.randn(7, 4)
data[names == 'Bob', 2:]
data[~(names == 'Bob')]
and和or在布爾型數(shù)組中無效。要使用&與|
data[ (names == 'Bob') | (names == 'Will')]
data[data < 0] = 0 將data中負(fù)值設(shè)為0
二維數(shù)組arr花式索引
arr[[4, 3, 0, 6]]
arr[[-3, -5, -7]]
arr[[1, 5, 7, 2], [0, 3, 1, 2]] 返回一維數(shù)組,其中的元素對應(yīng)各個索引元組
arr[[1, 5, 7, 2]][:, [0, 3, 1, 2]] 返回矩陣子區(qū)域
arr[:,[3,1,2]] 返回三列
arr.T
np.dot(arr1, arr2)
高維數(shù)組,transpose需要得到一個由軸編號組成的元組才能對這些軸進(jìn)行轉(zhuǎn)置
arr.reshape(X,Y)
swapaxes方法,它需要接受一對軸編號
下一篇對個別方法和函數(shù)做稍微深入一些探究,包括:
待續(xù)……