2016-05-23 13 views
0

関数np.array_split(x, n)は、配列xnにほぼ等しくサイズのチャンクに分割します。私は配列が分割される場所のインデックスを取得したい場合、これの最も便利な形式が何であるか疑問に思っています。だから、NumPy引数配列分割

ix = [(start1, end1), (start2, end2), ... (startn, endn)] 

よう

np.array_split(x, n)[i] == x[ix[i][0]:ix[i][1]] 

の配列は、私は、単純な何もしかし、これを得るためのいくつかの厄介な方法を考えることができます。

答えて

0

サブアレイの長さはわかっています。この結果の

>>> ix 
[(0, 4), (4, 7), (7, 10)] 

a = np.arange(10) 
res = np.array_split(a, 3) 
end = list(np.add.accumulate([len(x) for x in res])) 
start = [0] + end[:-1] 
ix = list(zip(start, end)) 

今、インデックスは次のとおりです。

>>> res 
[array([0, 1, 2, 3]), array([4, 5, 6]), array([7, 8, 9])] 

か:

for i in range(3): 
    assert np.all(np.array_split(a, 3)[i] == a[ix[i][0]:ix[i][1]]) 
ただ、開始と終了のインデックスを見つけるためにそれらを使用します
関連する問題