但是我没有索引值,我只有另一个数组中相同索引位置的数字。例如,我有
a = array([3,4,5,6])
b = array([0,1,0,1])
有没有一种
NumPy
方法可以快速查看它们并从a
中提取所有索引与b
中所有1
的索引匹配的值? 我期望结果为:array([4,6])
值得一提的是,我的a
数组是多维的,而我的b
数组始终只有0
或1
的值。我尝试使用NumPy
的logical_and
函数,但是当a
和b
具有不同的维度时,它会返回ValueError
:
a = numpy.array([[3,2], [4,5], [6,1]])
b = numpy.array([0, 1, 0])
print numpy.logical_and(a,b)
ValueError: operands could not be broadcast together with shapes (3,2) (3,)
虽然这种方法似乎在a
是平面的情况下有效,但无论如何,numpy.logical_and()
的返回类型都是布尔值,而我不想要这个。还有其他的方法吗?再次强调,在上面的第二个示例中,期望的返回值将是
array([[4,5]])
显然我可以写一个简单的循环来完成这个任务,但我只是想要更简洁的方法。
编辑:
这会引入更多的限制,我还应该提到多维数组a
的每个元素可能具有任意长度,而不匹配其相邻元素。
a[b.astype(bool)]
怎么样? - Divakara
的情况不起作用 :( - pretzlstyle