numpy配列の中点にインデックスを付けるには、次のようにします。
x = np.arange(10)
middle = x[len(x)/4:len(x)*3/4]
配列の中央にインデックスを付けるための省略形はありますか?たとえば、n
または2n
要素はlen(x)/2
?に近い これの素晴らしいn次元バージョンはありますか?
cgeが言ったように、最も簡単な方法は、次のようにラムダ関数に変換することです。
x = np.arange(10)
middle = lambda x: x[len(x)/4:len(x)*3/4]
またはn次元の方法は次のとおりです。
middle = lambda x: x[[slice(np.floor(d/4.),np.ceil(3*d/4.)) for d in x.shape]]
遅いですが、この問題に遭遇している他のすべての人にとって:はるかにスムーズな方法は、numpytake
またはを使用することput
です。
配列の中央をアドレス指定するにはput
、単一のインデックスでn次元配列にインデックスを付けるために使用できます。配列から値を取得する場合も同じです。take
配列に奇数の要素があると仮定すると、配列の中央はそのサイズの半分になります。//
(の代わりに)整数除算を使用することにより、/
ここで問題が発生することはありません。
import numpy as np
arr = np.array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
# put a value to the center
np.put(arr, arr.size // 2, 999)
print(arr)
# take a value from the center
center = np.take(arr, arr.size // 2)
print(center)