2

为什么是array1[:][1] != array1[:,1]

例如:

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]

4

1 回答 1

0

NumPy 将解释a[:]为数组的副本而不是“行”集。基本切片仅类似于连续切片,直到:出现条目。来自文档(第 1.4 节 - 索引):

在切片元组中具有多个 non-: 条目的基本切片,就像使用单个 non-: 条目重复应用切片一样,其中 non-: 条目被连续获取(所有其他 non-: 条目被替换为:) . 因此,x[ind1,...,ind2,:]就像x[ind1][...,ind2,:]在基本切片下一样。

:处理条目时存在隐含的复杂性。

于 2013-02-02T05:44:33.020 回答