我有一个关于python索引的问题:我正在尝试使用中心差分来估计' dU'来自一个阵列' U'我通过初始化' dU'来做到这一点。一系列的' nan'长度(U)然后应用中心差分使得dU(i)=(U(i + 1)-U(i-1))/ 2到中心元素。输出' dU'阵列目前给我两个' nan'向量末尾的条目。谁能解释为什么倒数第二个元素没有被更新?
import numpy as np
U= np.array([1,2,3,4,5,6])
dU = np.zeros(len(U))
dU[:] = np.NAN
dU[1:-2] = (U[2:-1]-U[0:-3])/2
>>> dU
array([ nan, 1., 1., 1., nan, nan])
答案 0 :(得分:0)
要包含倒数第二个元素,您需要:
dU[1:-1] = (U[2:]-U[0:-2])/2
答案 1 :(得分:0)
没有回答您的问题,但作为一个有用的提示,您可以使用numpy.gradient
>>> np.gradient(np.array([1,2,3,4,5,6]))
>>> array([ 1., 1., 1., 1., 1., 1.])