二维的Numpy数组索引

时间:2018-08-01 14:11:53

标签: python-3.x numpy indexing

我有一个二维的numpy数组,例如:

a = np.array([[1,2,3,4,5],[4,6,5,8,9]])

我尝试做a = a[a[0]>2],但出现错误。我想获得:

 array([[3, 4, 5],
   [5, 8, 9]])

有可能吗?谢谢!

1 个答案:

答案 0 :(得分:2)

逐步评估选项:

In [75]: a = np.array([[1,2,3,4,5],[4,6,5,8,9]])

第一行,一维数组

In [76]: a[0]                     
Out[76]: array([1, 2, 3, 4, 5])

其中第一行为> 2,即大小相同的一维布尔数组

In [77]: a[0]>2
Out[77]: array([False, False,  True,  True,  True])

使用直接指令会产生错误:

In [78]: a[a[0]>2]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-78-631a57b67cdb> in <module>()
----> 1 a[a[0]>2]

IndexError: boolean index did not match indexed array along dimension 0; dimension is 2 but corresponding boolean dimension is 5

a的第一维为2,但布尔值索引(掩码)的大小为2(第二暗)

因此我们需要将其应用于第二维。二维索引语法:x[i, j]x[:, j]以选择所有行,但选择列的子集:

In [79]: a[:,a[0]>2]
Out[79]: 
array([[3, 4, 5],
       [5, 8, 9]])