我有一个容易解决的问题,但我仍然无法解决:
我有一个包含1000个数字的数组,称为“ mu”,如下所示:
array([2.25492522e-01, 2.21059993e-01, 2.16757006e-01,....)
现在我需要将这些值插入两个不同的函数中: 对于数组中小于0.009的数字,我需要使用Equation1:
nu = 1 - 5.5 * mu**(0.66) + 3.77 * mu
对于数组中的所有其他数字,我需要将它们插入Equation2:
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
如何告诉Python输入正确的数字?
答案 0 :(得分:3)
一个问题是您没有在item
循环中使用for
。您也不会追加到列表或分配新的数组来存储结果。无论如何,NumPy具有为此任务设计的特定功能。例如,使用numpy.where
:
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))
虽然您可能会觉得效率低下,因为处理的计算量是所需数量的两倍,但矢量化运算的优势却远远超过了它。