用于中心差分的Python索引

时间:2017-03-31 13:01:13

标签: python numpy

我有一个关于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])

2 个答案:

答案 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.])