我目前正在使用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循环。
答案 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。