2017-01-04 1 views
1

私は、例えばa(a.shape =(2,20,50,50))のように1つの配列があります。私はその第二軸上に関数を適用したいと思います。np.ndarrayに関数を適用しますか?

My機能は、私はすでにラムダ関数でそれを試してみました、すなわち

res = a[:,i+1,:,:] - a[:,i,:,:] for i in range(20) 

のみ第2の軸に沿った各要素間の差であるが、出力リストです。私はaと同じ形で結果を得たいと思います。つまり、res.shape =(2,20,50,50)にしたいということです。

誰かが私を導くなら、私は感謝します。

ありがとうございます。

+0

もっとコードを共有してください。おそらく私は再実行して試すことができる小さな例です。 –

答えて

3

機能を適用する必要はありません。ただそれらを直接減算する。

res = a[:,1:,:,:]-a[:,0:-1,:,:] 

さらに、(2,20,50,50)ndarrayではなく(2,19,50,50)を取得できます。

+2

['np.diff'](https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.diff.html)は、より精神的な努力をするかどうかによってより明確になるかもしれません'diff'が何をしているのか、またはスライスを解釈するのを覚えています。 – user2357112

+0

'np.diff'はこのスライスを正確に行います。しかし、それを自分で行うことができるのは、長期的には、 'diff'ラッパーがあることを覚えておくよりも便利です。 – hpaulj

関連する問題