【发布时间】:2021-12-19 15:26:51
【问题描述】:
我该如何解决这个错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all().
这是有错误的行:
Kz=(2.01*(max(4.75,z)/zg)**(2/a)*kz_StdRnd[j])
Python:
n_samples=20000
a1= np.random.uniform(0,1,(n_samples,1))
a10 = np.linspace(1,20000,num=20000)-1+a1/n_samples
kz_StdRnd = 1+0.16*norm.ppf(a10,0.0,1.0)
kz_StdRnd = kz_StdRnd[np.random.permutation(n_samples)]
for j in range(n_samples):
a=9.5
zg=274.32
Kz=(2.01*(max(4.75,z)/zg)**(2/a)*kz_StdRnd[j])
【问题讨论】:
-
当你在一行上有一个巨大的方程时,真的很难调试。如果你把它分成多行,你将能够真正看到它的哪一部分导致了错误。
-
请提供完整的minimal reproducible example - 阅读How to Ask。
-
错误在最后一行,用于在for循环中计算KZ。
-
@saeed 你已经说过了,我知道。我是说那条线发生了很多事情,如果你把那条线分成多条线,就可以准确地知道那条线的哪一部分导致了错误。例如,不是
x = f*g/h**(2/i),而是a=2/i、b=h**a、c=f*g和x=c/h之类的单独行。 -
最后一行中的所有内容都是标量,
z除外。那是一个数组吗?max(4.75, np.zeros((3,)))似乎复制了您的问题,并且是 THE 我们需要的最小可复制示例。假设z是一个数组,您期望 max 调用的结果是什么?
标签: python valueerror