Pythonのメモ帳

numpy, pandas, tensorflow を使いこなすための忘備録

2次元配列をシフトさせる

pythonで配列をシフトさせたくて調べてみた。 

自分でコード書いてもできるけど、pythonのことだからぴったりの関数があるんじゃないかと思って探していたら、scipy の shift() という関数を見つけた。

import numpy as np 
from scipy.ndimage.interpolation import shift
xs
= np.array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
shift
(xs, 3, cval=np.NaN)

stackoverflow.com

上の例のように配列を右に3つシフトさせると出力はこうなる。

出力: [ nan, nan, nan, 0., 1., 2., 3., 4., 5., 6.]

 

逆向きに左にシフトさせる場合は、マイナスを使う。

shift(xs, -3, cval=np.NaN)
出力:[ 3., 4., 5., 6., 7., 8., 9., nan, nan, nan]

 

結果は省略するけど、この関数は2次元配列にも使える。
下のようにシフト量をリストで表記すればいい。

shift(xs, [-3, 1], cval=np.NaN)

 

試してないけど3次元以降も使えるのかも。

ちなみに、配列内に nan が含まれる場合は、shift()は使えないみたい。
配列の中身が全てnanになってしまう。ちょっと惜しい。

  

 

 WEB/EC専門の転職支援サービス【サポタント】