Python阵列形状差



我的数组为:

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

最新更新