python - 比较 numpy 数组中的多个值

标签 python arrays numpy

我有一个 numpy 数组

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

我想做类似的事情

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

得到

[[False, True,   False, False],
 [False, False,  True,  False],
 [False, False,  False, True ],
 [True,  False,  False, False]]

换句话说,我希望第i列显示a的每个元素是否等于i。这感觉就像是 numpy 可能会变得容易的事情。有什么想法吗?

最佳答案

这里使用的关键概念是广播。

a = numpy.array([1,2,3,0])
b = numpy.array([0,1,2,3])
a[..., None] == b[None, ...]

结果:

>>> a[..., None] == b[None, ...]
array([[False,  True, False, False],
       [False, False,  True, False],
       [False, False, False,  True],
       [ True, False, False, False]], dtype=bool)

了解如何使用广播将大大改进您的 NumPy 代码。你可以在这里阅读:

关于python - 比较 numpy 数组中的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20577586/

相关文章:

python - conda install python=3.6 不满意错误

将 char 数组中的单词转换为包含单个空格的行

java - 在java中,用空字符更改char数组的大小

python - 为什么复制 >= 16 GB 的 Numpy 数组会将其所有元素设置为 0?

python - 安装 matplotlib 错误 : Command errored out with exit status -4

python - 如何从谷歌云存储读取子目录/前缀中的文件?

python - 如何使用正则表达式在python中搜索两位数?

Python Unicode 输出格式

arrays - perl xs-从c数组返回perl数组

python - 将列表中的字符串转换为 float