我有一个二维NumPy数组,例如:
array([[1, 1, 0, 2, 2],
[1, 1, 0, 2, 0],
[0, 0, 0, 0, 0],
[3, 3, 0, 4, 4],
[3, 3, 0, 4, 4]])
我想从该数组中获取某个列表中的所有元素,例如(1,3,4)。在示例中,期望的结果是:
^{pr2}$我知道我可以做(正如这里推荐的Numpy: find elements within range):
np.logical_or(
np.logical_or(cc_labeled == 1, cc_labeled == 3),
cc_labeled == 4
)
,但这仅在示例中有效。实际上,迭代使用for循环和numpy.logical\u或结果是非常慢的,因为可能值的列表是以千为单位的(numpy数组的维数大约为1000 x 1000)。在
使用^{} :
in1d
,顾名思义,是在平坦数组上操作的,因此需要在操作之后进行整形。您可以使用^{} -
另外,^{} 可以用来-
^{pr2}$您还可以使用^{} 来查找这类匹配,方法是使用其可选的},并注意到对于匹配项,searchsorted将使用这两个输入输出不同的结果。因此,
'side'
参数,输入为left
和{np.in1d(A,[1,3,4])
的等价物是-因此,最终输出将是-
请注意,如果输入搜索列表未排序,则需要使用可选参数
sorter
,并在np.searchsorted
中使用其argsort
索引。样本运行-
运行时测试和验证输出-
相关问题 更多 >
编程相关推荐