想要在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,)
有什么想法吗?
答案 0 :(得分:5)
您需要在数组B
中插入额外的维度:
A < B[:, None]
这允许NumPy正确匹配两种形状进行广播; B
现在有形状(4,1),尺寸可以配对:
(4, 100)
(4, 1)
规则是尺寸具有相同的长度,或者其中一个长度需要为1;这里100可以与1配对,4可以与4配对。在插入新尺寸之前,NumPy尝试将100与4配对,这引起了错误。