Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python If/Then根据数组中的每个值应用不同的函数_Python_Arrays_Python 2.7_Numpy - Fatal编程技术网

Python If/Then根据数组中的每个值应用不同的函数

Python If/Then根据数组中的每个值应用不同的函数,python,arrays,python-2.7,numpy,Python,Arrays,Python 2.7,Numpy,我有一个据称很容易解决的问题,但我仍然无法解决: 我有一个包含1000个数字的数组,称为“mu”,如下所示: array([2.25492522e-01, 2.21059993e-01, 2.16757006e-01,....) 现在我需要将这些值插入两个不同的函数: 对于数组中小于0.009的数字,我需要使用等式1: nu = 1 - 5.5 * mu**(0.66) + 3.77 * mu 对于数组中的所有其他数字,我需要将它们插入等式2中: nu = 0.819**(-11.5*mu)

我有一个据称很容易解决的问题,但我仍然无法解决:

我有一个包含1000个数字的数组,称为“mu”,如下所示:

array([2.25492522e-01, 2.21059993e-01, 2.16757006e-01,....)
现在我需要将这些值插入两个不同的函数: 对于数组中小于0.009的数字,我需要使用等式1:

nu = 1 - 5.5 * mu**(0.66) + 3.77 * mu
对于数组中的所有其他数字,我需要将它们插入等式2中:

nu = 0.819**(-11.5*mu)+0.0975**(-70.1*mu)
最后,我需要一个函数值数组“nu”

我尝试了一下这个代码,但没有成功

for item in mu:
    if item < 0.009:
       nu = 1 - 5.5 * mu**(0.66) + 3.77 * mu
    else:
       nu = 0.819**(-11.5*mu)+0.0975**(-70.1*mu)

print nu
对于mu中的项目:
如果项目<0.009:
nu=1-5.5*亩**(0.66)+3.77*亩
其他:
nu=0.819**(-11.5*亩)+0.0975**(-70.1*亩)
打印nu

如何告诉Python将正确的数字输入?

一个问题是您没有在
for
循环中使用
项。您也不会附加到列表或分配到新数组来存储结果。在任何情况下,NumPy都具有为此任务设计的特定功能。例如,使用:

def func1(x):
返回1-5.5*x**(0.66)+3.77*x
def func2(x):
返回0.819**(-11.5*x)+0.0975**(-70.1*x)
res=np.其中(mu<0.009,func1(mu),func2(mu))

虽然您可能会觉得这是低效的,因为处理的计算量是所需计算量的两倍,但矢量化操作的好处远远超过了这一点。

谢谢您,jpp。您提供的答案与预期一样有效!
def func1(x):
    return 1 - 5.5 * x**(0.66) + 3.77 * x

def func2(x):
    return 0.819**(-11.5*x)+0.0975**(-70.1*x)

res = np.where(mu < 0.009, func1(mu), func2(mu))