一维和二维数组之间的元素比较
Posted
技术标签:
【中文标题】一维和二维数组之间的元素比较【英文标题】:Element wise comparison between 1D and 2D array 【发布时间】:2015-10-09 19:34:49 【问题描述】:想要在 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] 进行比较,B[0] 为 5。结果将是一个布尔数组。
如果我尝试这个,我会得到:
operands could not be broadcast together with shapes (4,100) (4,)
有什么想法吗?
【问题讨论】:
【参考方案1】:你需要在数组B
中插入一个额外的维度:
A < B[:, None]
这允许 NumPy 正确匹配两个形状以进行广播; B
现在有形状 (4, 1) 并且尺寸可以配对:
(4, 100)
(4, 1)
规则是,要么维度具有相同的长度,要么其中一个长度需要为 1;这里100可以和1配对,4可以和4配对。在插入新维度之前,NumPy尝试将100和4配对,导致错误。
【讨论】:
这比我想象的要容易..啊,我应该想到的 :) 是的,它有效.. 没问题 - 很高兴它有帮助。以上是关于一维和二维数组之间的元素比较的主要内容,如果未能解决你的问题,请参考以下文章