我有一个条件,需要比较值。AV
是一个arary,53
是一个数字。即使我创建了array = 53 * len(AV)
,python也有一个问题。你知道吗
The truth value of an array with more than one element is ambigous.
我该怎么解决这个if条件?你知道吗
def app_visc(PV, YP, Dbit, DP, ROP):
vcut = 1/((1-(Dbit/DP)**2)*(0.64 + np.divide(18.16, ROP)))
vslipguess = 3 #Guess
vcrit = vcut + vslipguess
AV = PV + np.divide(5*YP*(Dbit-DP),vcrit)
if AV <= 53: #TODO: porównanie wartości macierzy
vslip = 0.0051*AV + 3.006
else:
vslip = 0.02554*(AV-53) + 3.28
return vslip
有(至少)三种不同的东西你可以用
if AV <= 53:
来表示,它们都有非常不同的效果。所以,numpy的设计不是为了猜测你的意思,而是提出这个错误来迫使你明确。你知道吗如果要在所有值都小于53时执行操作,请使用
all
函数或方法:如果要在任何值小于53时执行操作,请使用
any
函数或方法:如果要对53下的每个值执行操作,并且要使用纯Python循环执行该操作,只需在bool数组上循环:
当然,你几乎总是想在numpy里面做循环:
这只是一个数组,它包含了
a
的所有值,即<= 53
。你知道吗如果你想确切地了解这是怎么发生的,你可以把事情分成几个步骤。虽然
if a<=53:
循环非常简单,但numpy中的任何东西都没有看上去那么简单。试试这个:所以
a<=53
实际上是一个由5个布尔组成的数组,每个布尔告诉你a
的对应成员是否是<=53
。你知道吗如果你试着把它当作一个单独的
bool
:那正是你的错误。你知道吗
相关问题 更多 >
编程相关推荐