我有两个数组。两者都是1D。但是,我得到以下值错误。以下是我尝试过的。
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()
就这么简单。
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)
这是一个解释。
如果你真的只是想知道是否至少有一个元素符合条件,那么你应该使用any()
。
Python很难将列表T
中的值与数字进行比较
在T > 8
上引发错误。
对于列表
- 使用
all()
检查列表中的所有项目是否都高于值:
all(x > value for x in list)
- 使用
any()
检查列表中是否有任何项目高于值:
any(x > value for x in list)
对于NumPy阵列
- 当具有
NumPy
阵列时,可以将其缩短为:
T = np.array([1,2,3])
all(T > 8)
修复
固定到all
:
H=[]
import numpy as np
T = np.array([30,34,56])
R = np.array([29,500,43])
if all(T > 8) and all(R > 10):
H.append(0.5 * (T + 61. + (T - 68.) * 1.2 + R * 0.094))
else:
H.append(0 * 2)
与上面的答案状态一样,您可以使用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解释器每次需要一个值,以便进行比较。