一维和二维数组之间的元素比较

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配对,导致错误。

【讨论】:

这比我想象的要容易..啊,我应该想到的 :) 是的,它有效.. 没问题 - 很高兴它有帮助。

以上是关于一维和二维数组之间的元素比较的主要内容,如果未能解决你的问题,请参考以下文章

返回一个二维整数数组中最大子数组的和

php 比如有一个一维数组 我想给这个数组增加一个元素 这个元素是一个二维数组 该怎么写啊

二维数组与一维数组的比较

c语言怎么把二维数组的字符串给到一维数组?

C++二维数组给一维数组赋值

二维数组元素的地址