给出以下示例
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
,如果有很多值,这可能更容易:
>>> 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]])