數據分析——numpy詳解2

數據分析——numpy詳解2

高維度數組:

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]]


分享到:


相關文章: