gpt4 book ai didi

python - numpy 数组的算术比较

转载 作者:太空宇宙 更新时间:2023-11-03 11:07:29 25 4
gpt4 key购买 nike

>>> 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com