python - numpy 数组的算术比较

标签 python numpy

>>> import numpy as np
>>> x = np.eye(3)
>>> x[1, 2] = .5
>>> x
array([[ 1. ,  0. ,  0. ],
       [ 0. ,  1. ,  0.5],
       [ 0. ,  0. ,  1. ]])
>>> 0 < x.any() < 1
False
>>> 

我想检查 numpy 数组是否包含 0 到 1 之间的任何值。
我读了0 < x.any() < 1就像“如果有任何元素的大小大于 0 小于 1,则返回 true”,但显然不是这种情况。

如何对 numpy 数组进行算术比较?

最佳答案

>>> np.any((0 < x) & (x < 1))
True

什么 x.any()实际上:它与 np.any(x) 相同,意味着它返回 True如果 x 中有任何元素是非零的。所以你的比较是0 < True < 1 ,这是错误的,因为在 python 2 0 < True 中是真的,但是True < 1不是,因为 True == 1 .

相比之下,在这种方法中,我们创建 bool 数组来判断每个元素的比较是否为真,然后检查该数组的任何元素是否为真:

>>> 0 < x
array([[ True, False, False],
       [False,  True,  True],
       [False, False,  True]], dtype=bool)
>>> x < 1
array([[False,  True,  True],
       [ True, False,  True],
       [ True,  True, False]], dtype=bool)
>>> (0 < x) & (x < 1)
array([[False, False, False],
       [False, False,  True],
       [False, False, False]], dtype=bool)

你必须做显式的 & ,因为不幸的是 numpy 不能(我认为不能)使用 python 的内置比较运算符链。

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

相关文章:

python - Matplotlib安装问题

python - Pandas:从保留其顺序的 2D numpy 数组创建数据框

Python NumPy : How to fill a matrix using an equation

python - 如何使用 Python 将数组从球面坐标插值到笛卡尔坐标?

python - 设置tensorflow conv2d操作的权重和偏差张量

python - Pandas 使用 numpy 数组填充值

python - 包上的 `del` 有某种内存

python - 在只读模式下使用 OpenPyXL 获取 Excel 工作表的列名

python - 对非结构化 THREDDS 数据进行子采样的简单、可编写脚本的方法?

python - 寻找最短的唯一子串