2017-03-31 13 views
1

私はpythonのインデックスについて質問があります:私は中央の差分を使用して配列 'U'から 'dU'を推定しようとしています。 (U + 1)-U(i-1))/ 2を中央要素に加えるような中央差分を適用することによって得られる。出力 'dU'配列は現在、ベクトルの最後に2つの 'nan'エントリを与えています。誰も2番目の要素が更新されていない理由を説明できますか?最後の要素への第二持って中央差分のためのPythonインデックス

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

doesnのを使用することができます範囲の2番目の値は、含まれない*最初の要素を示しますか?したがって 'dU [1:-2]'は 'dU [-1]'だけでなく 'dU [-2]'も除外します。 –

答えて

0

はあなたが必要となる含ま:

dU[1:-1] = (U[2:]-U[0:-2])/2 
+0

それに完璧なおかげで! –

+0

あなたは歓迎です:) – zipa

0

は、あなたの質問に答えていませんが、役立つヒントとして、あなただけのnumpy.gradient

>>> np.gradient(np.array([1,2,3,4,5,6])) 
>>> array([ 1., 1., 1., 1., 1., 1.]) 
関連する問題