我的数组为:
A
Out[159]:
array([[ 1, 2, 3, 4, 5, 6, 7, 8],
[ 2, 4, 6, 8, 10, 12, 14, 16]])
现在,如果我找到了:
的形状A[0:1].shape
Out[150]: (1, 8)
,如果我尝试
A[ [0,0,1,1], [0,3,2,5] ].shape
Out[151]: (4,)
第一个数组似乎是1行和8列,第二列似乎是1行和4列,那么为什么显示第二个答案为(4,)而不是(1,4)?
第二种情况并不意味着您认为它的含义。
这种奇特的索引在numpy中的工作方式如下:如果A
是2DIM数组,而I1 = [a1, a2, ...]
和I2 = [b1, b2, ...]
是INT的数组/列表,则此索引:
A[I1,I2]
表示:
np.array([ A[a1,b1], A[a2,b2], A[a3,b3], ... ])
I1
是指沿dim = 0的索引, I2
指的是沿dim = 1的相应索引。这意味着每个[a_k, b_k]
对定义了一个单个元素,要包含在切片数组中。
另一种考虑这一点的方式:考虑np.where
返回的元组,以及您期望这是什么意思:
A[np.where(A == x)]