2013-02-02 26 views
2

爲什麼ARRAY1 [:]![1] = ARRAY1 [:,1]的Python numpy的:引用列

array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 
array1[1] ## Output: array([4,5,6]) as expected 
array1[:,1] ## Output: array([2, 5, 8]) as expected 
array1[:][1] ## Output: array([4,5,6]) which isn't what I expected! 

當使用雙托架參考是ARRAY1 [:]成分執行首先返回完整的2D數組?因此array1 [:] [1] == array1 [1]

+1

with'array1 [:]'你正在訪問array1的副本!!這就是爲什麼兩者都是相同的。 – namit

回答

0

NumPy會將a[:]解釋爲數組的副本,而不是「行」集。基本切片只是類似於連續切片,直到出現:條目。從文檔(第1.4節 - 索引):

基本切片與多個非:在切片元組中的條目,就像使用單個non-:條目重複應用切片一樣,其中non-連續拍攝作品(所有其他非作品:作品替換爲:)。因此,在基本切片下,x[ind1,...,ind2,:]的行爲如同x[ind1][...,ind2,:]

當處理:條目時,存在隱含的併發症。