高維度數組:
data = numpy.array([[1,2,3],[4,5,6],[7,8,9]])
data[1][1]等價於data[1,1]
代表第一行第一列的元素。
切片:
data[1:3,:2,:]#代表對不同維度的切片。
對切片的賦值會擴散到整個選區。
布爾型數組:
names = numpy.array(['qwe','asd','zxc'])
names=='qwe'#會返回一個包含True,False的布爾型數組。
對於條件的否定:
可以使用!= 或者 -
names != 'qwe'
需要選取兩個需要組合應用的多個布爾值,使用&(和),|(或),之類的布爾運算符即可
例如:
mask = (names == 'qwe')|(names=='asd')
然後mask即為產生的布爾數組。
根據布爾型索引選取的數組的數據,將總是創建數據的副本,即使返回一模一樣的數組。
Python的關鍵字and or 在布爾型數組中無效。
花式索引:
1.
arr = numpy.empty((8,4))
for i in range(8):
arr[i]=i
#以特定順序選取行子集,只需傳入一個用於指定順序的整數列表或ndarray即可:
arr[[4,2,1,6]]#代表選取arr的第4,2,1,6行的數據。也可以使用負數索引從行末尾選取。
arr[[1,5,7,2] , [0,3,1,2]]#代表選取(1,0)(5,3)(7,1)(2,2)位置的數據。
arr[[1,5,7,2]][:,[0,3,1,2]]#代表選取1,5,7,2行的全部數據,然後將每一行的數據按照0 3 1 2 的順序排列輸出,
與這一種方法形成相同效果的還有numpy.ix_()函數,它將兩個一維數組轉換為一個用於"選取方形區域"的"索引器"。
arr[numpy.ix_([1,5,7,2],[0,3,1,2])
注:
花式索引跟切片不一樣,它總是將數據“複製”到新數組中。
數組的轉置和軸的對換
轉置(transpose)是重塑的一種特殊形式,它返回的是源數據的視圖("不會進行任何複製操作")。數組不僅有transpose方法,還有一個特殊的T屬性。
arr[[1,1,1],
[2,2,2],
[3,3,3]]
arr.T#進行X Y軸的轉換。
[[1,2,3],
[1,2,3],
[1,2,3]]