1D和2D阵列之间的元素比较

时间:2015-10-09 19:34:49

标签: python arrays numpy elementwise-operations

想要在1D和2D阵列之间执行元素比较。需要将1D阵列的每个元素与相应的2D行进行比较(例如,更大),并且将创建掩模。这是一个例子:

A = np.random.choice(np.arange(0, 10), (4,100)).astype(np.float)
B = np.array([5., 4.,  8.,  2. ])

我想做

A<B 

这样A的第一行将与B [0]进行比较,后者为5.结果将是一个布尔数组。

如果我试试这个,我得到:

operands could not be broadcast together with shapes (4,100) (4,)

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

您需要在数组B中插入额外的维度:

A < B[:, None]

这允许NumPy正确匹配两种形状进行广播; B现在有形状(4,1),尺寸可以配对:

(4, 100)
(4,   1)

规则是尺寸具有相同的长度,或者其中一个长度需要为1;这里100可以与1配对,4可以与4配对。在插入新尺寸之前,NumPy尝试将100与4配对,这引起了错误。