numpy.gradient指定轴(中心差分法)

时间:2015-12-11 02:16:44

标签: python arrays numpy

我目前正在使用numpy版本1.92,我相信这是最新公开的版本。我希望在n维数组上快速使用中心差分方法,并指定一个执行计算的轴。

我的第一个想法是使用numpy.diff,它允许轴指定,但是这会返回正确的差异而不是中心差异,并且功能有限。

我理解以下方法可以使用numpy.gradient

num_vectors=10 #number of 3-vectors in the 2D array
vectorarray=numpy.empty((num_vectors,3)) 
vectorarray[0]=[4,5,6]
vectorarray[1]=[1,4,4]
vectorarray[2]=[8,8,1] #add some arbitrary data for illustrative purposes

c1,c2=numpy.gradient(vectorarray)

所以c1存储了我需要的有用信息。问题是我还必须生成c2,我想用许多维数组进行这种计算,并且通过生成所有这些无用的数据会导致时间损失。

是否有任何其他方法可以在没有冗余的情况下实现相同的结果,最好还包括使用嵌套for循环。

1 个答案:

答案 0 :(得分:0)

您可以在https://github.com/numpy/numpy/blob/master/numpy/lib/function_base.py#L1119阅读Numpy的渐变代码并使用其中的算法。

您也可以复制它并将for i, axis in enumerate(axes):更改为for i, axis in [[0,0]]:,以便它只运行一次,但请注意,修改后的代码可能属于Numpy's license