Python Numpy:数组的索引

Python Numpy:数组的索引,python,numpy,Python,Numpy,给出下面的例子 d = array([[1, 2, 3], [1, 2, 3], [1, 3, 3], [4, 4, 4], [5, 5, 5] ]) 要获取第一列中包含1的子数组,请执行以下操作: d[ d[:,0] == 1 ] array([[1, 2, 3], [1, 2, 3], [1, 3, 3]]) 如何获取(无循环)包含1和5的子数组?不应

给出下面的例子

d = array([[1, 2, 3],
           [1, 2, 3],
           [1, 3, 3],
           [4, 4, 4],
           [5, 5, 5]
          ])
要获取第一列中包含
1
的子数组,请执行以下操作:

d[ d[:,0] == 1 ]

array([[1, 2, 3],
       [1, 2, 3],
       [1, 3, 3]])
如何获取(无循环)包含
1
5
的子数组?不应该是这样的

d[ d[:,0] == [1,5] ]  #   ---> array([1, 2, 3])
哪个不起作用?

方法1:使用按位或
组合条件:

>>> d
array([[1, 2, 3],
       [1, 2, 3],
       [1, 3, 3],
       [4, 4, 4],
       [5, 5, 5]])
>>> (d[:,0] == 1) | (d[:,0] == 5)
array([ True,  True,  True, False,  True], dtype=bool)
>>> d[(d[:,0] == 1) | (d[:,0] == 5)]
array([[1, 2, 3],
       [1, 2, 3],
       [1, 3, 3],
       [5, 5, 5]])
方法#2:使用,如果有很多值,这可能更容易:

>>> np.in1d(d[:,0], [1, 5])
array([ True,  True,  True, False,  True], dtype=bool)
>>> d[np.in1d(d[:,0], [1, 5])]
array([[1, 2, 3],
       [1, 2, 3],
       [1, 3, 3],
       [5, 5, 5]])

第二个解决方案是我需要的。我没有意识到这一点。谢谢