我正试着画一个函数的曲面图,看起来像这样:
def model(param,x_1,x_2,x_3,x_4):
est=param[0]+param[1]*(x_1+x_2*x_3+x_2**2*x_4)
return est
重点是根据x_2的取值,当x_2〉=0时x_3=1,当x_2〈0时x_4=1(否则为0)。
当我试图绘制曲面图时,我对如何绘制网格感到困惑,因为除了x_1和x_2之外,还有2个变量。
为了计算z轴,我尝试将函数修改为:
def function (param,x_1,x_2):
if x_2>0:
est=param[0]+param[1]*(x_1+x_2)
else:
est=param[0]+param[1]*(x_1+x_2**2)
return est)
但是它说真值是二义性的,我理解为python看x_2〉=0里面所有的值是不是。
我也尝试过使用np.sign(),但它的作用方式与我想要的不一样。
有没有什么方法可以根据数组中elenmt的值来改变函数,和/或在不使用for循环手动计算z轴的情况下解决这个问题?
2条答案
按热度按时间iyr7buue1#
如果要检查所有大于0的值,请使用
all
:但如果要对每个值应用测试,请使用
np.where
:siotufzp2#
我认为您需要
numpy.where
:工作原理:
如果掩码中的
True
是param[0]+param[1]*(x_1+x_2)
中的值,否则是param[0]+param[1]*(x_1+x_2**2)
中的值: