如何解决如果比较numpy数组的语句引发ValueError
我有两个数组。两者都是一维的。但是,我收到以下值错误。下面是我尝试过的。
R=np.arange(30,50,1)
T=np.arange(70,90,1)
H=[]
if (T > 8) and (R>10):
H.append(0.5 * (T + 61. + (T - 68.) * 1.2 + R * 0.094))
else:
H.append(0 * 2)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
解决方法
Python努力将列表X = np.random.uniform(0,1,(32,10)).astype('float32')
x = Dense(1)
pred = x(X)
W,b = x.get_weights()
(pred == (tf.matmul(X,W) + b)).numpy().all() # TRUE
中的值与数字进行比较。
错误在T
上出现。
用于列表
- 使用
all()
检查列表中的所有项目是否都超过值:
T > 8
- 使用
any()
检查列表中是否有任何项目高于值:
all(x > value for x in list)
用于NumPy数组
- 具有
any(x > value for x in list)
数组时,可以缩短为:
NumPy
修复
固定为T = np.array([1,2,3])
all(T > 8)
:
all
,
与上述答案状态一样,您可以使用全部或任何一个。 使用any的解决方法是:
if any(t > value for t in T) and any(h > value for h in H):
H.append(0.5 * (T + 61. + (T - 68.) * 1.2 + R * 0.094))
else:
H.append(0 * 2)
python解释器一次需要1个值,以便可以比较。
,就这么简单。
import numpy as np
R=np.arange(30,50,1)
T=np.arange(70,90,1)
H=[]
if (T > 8).all() and (R>10).all():
H.append(0.5 * (T + 61. + (T - 68.) * 1.2 + R * 0.094))
else:
H.append(0 * 2)
print(H)
这里是explanation。
如果您真的只想知道至少一个元素是否属于这种情况,则应使用any()
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。