我试图找到如何将两个函数应用到一个numpy数组中,每个函数的值只有一半。 这是我一直在尝试的代码
def hybrid_array(xs,height,center,fwhh):
xs[xs<=center] = height*np.exp((-(xs[xs<=center]-center)**2)/(2*(fwhh/(2*np.sqrt(2*np.log(2))))**2))
xs[xs>center] = height*1/(np.abs(1+((center-xs[xs>center])/(fwhh/2))**2))
return xs
但是,我正在覆盖传递给参数的初始数组。通常的技巧是用一个切片来复制它,即以下仍然是b
a = b[:]
c = hybrid_array(a,args)
如果有更好的方法来完成我正在尝试的任何部分,我将非常感谢你能让我知道,因为我仍然是新的numpy阵列。 谢谢
在调用函数之前,请尝试copy.deepcopy将数组
b
复制到a
。你知道吗或者,可以使用数组的copy方法
注***
您可能想知道,为什么尽管使用numpy array的copy方法复制数组更简单,我还是介绍了复制.deepcopy. 其他人可能不同意,但我的理由是
用
a.copy()
复制NumPy数组a
。但是,在应用程序中,不需要复制旧数据。您所需要的只是一个与旧数组形状和数据类型相同的新数组。你可以用创建这样一个数组。如果通常不希望函数修改其参数,则应在函数内部执行此操作,而不是要求调用方处理此操作。你知道吗
相关问题 更多 >
编程相关推荐