Numpy将数组与多个标量同时进行比较

时间:2018-05-10 16:13:29

标签: python numpy

假设我有一个数组

a = np.array([1,2,3])

我希望将它与一些标量进行比较;这很好用

a == 2 # [False, True, False]

有没有办法可以进行这样的比较但是同时使用多个标量?比较两个数组时的默认行为是进行元素比较,但我希望将一个数组的每个元素与其他整个数组进行元素比较,如下所示:

scalars = np.array([1, 2])
some_function(a, scalars)
[[True, False, False],
 [False, True, False]]

显然我可以这样做,例如,使用for循环然后堆叠,但有没有任何矢量化的方法来实现相同的结果?

1 个答案:

答案 0 :(得分:5)

Outer product, except it's equality instead of product

numpy.equal.outer(scalars, a)

或调整尺寸并执行broadcasted比较:

scalars[:, None] == a