18

numpy配列の中点にインデックスを付けるには、次のようにします。

x = np.arange(10)
middle = x[len(x)/4:len(x)*3/4]

配列の中央にインデックスを付けるための省略形はありますか?たとえば、nまたは2n要素はlen(x)/2?に近い これの素晴らしいn次元バージョンはありますか?

4

2 に答える 2

5

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]]
于 2013-04-05T18:30:41.583 に答える
3

遅いですが、この問題に遭遇している他のすべての人にとって:はるかにスムーズな方法は、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)

于 2020-02-11T10:19:05.637 に答える