具有多个元素的数组的真值是不明确的.使用a.any()或a.all()

Jua*_*ldo 2 python arrays numpy error-code

虽然我知道有各种问题寻找这个错误消息的解决方案,我还没有找到一个答案,帮助我解决我的代码,使比较工作,我有代码

def f(x,d,h,L):
    ans=0.
    if ((0.<=x) & (x<d)):
        ans=h*(x/d)
    elif ((d<=x) & (x<=L)):
        ans=((L-x)/(L-d))
    return ans

x=np.linspace(0,10,1000)
h=5*10**(-3)
d=16*10**(-2)
L=64.52*10**(-2)
func=f(x,d,h,L)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行它时,我得到一个错误,指向if标题中带有错误代码的行,我尝试过在类似问题中给出的建议解决方案,例如使用np.logical_andand代替&但三者都产生相同的错误,请帮助我出

小智 5

使用numpy.where.(可选)对浮点数使用指数表示法.

import numpy as np

def f(x, d, h, L):
    return np.where(x < d, h*(x/d), (L - x)/(L - d))

x = np.linspace(0,10,1000)
h = 5e-3
d = 16e-2
L = 64.52e-2

func = f(x, d, h, L)
Run Code Online (Sandbox Code Playgroud)