N次元の配列から特定の2次元配列を取り出したいです。
例えば2次元の以下の配列があるとして、
python
1A = np.arange(24).reshape(4,6) 2 3#[[ 0 1 2 3 4 5] 4# [ 6 7 8 9 10 11] 5# [12 13 14 15 16 17] 6# [18 19 20 21 22 23]] 7
以下の関数を適用すると、
python
1np.vsplit(A, 4) 2 3# [array([[0, 1, 2, 3, 4, 5]]), 4# array([[ 6, 7, 8, 9, 10, 11]]), 5# array([[12, 13, 14, 15, 16, 17]]), 6# array([[18, 19, 20, 21, 22, 23]])] 7
のように簡単にsplitすることができます。
多次元の場合は
python
1A = np.arange(24).reshape(2,4,3) 2# array([[[ 0, 1, 2], 3# [ 3, 4, 5], 4# [ 6, 7, 8], 5# [ 9, 10, 11]], 6# 7# [[12, 13, 14], 8# [15, 16, 17], 9# [18, 19, 20], 10# [21, 22, 23]]]) 11 12C = [A[i,:,:] for i in range(A.shape[0])] 13# [array([[ 0, 1, 2], 14# [ 3, 4, 5], 15# [ 6, 7, 8], 16# [ 9, 10, 11]]), 17# array([[12, 13, 14], 18# [15, 16, 17], 19# [18, 19, 20], 20# [21, 22, 23]])] 21
のように分割を行うことができますが、 A[i,:,:]とA.shape(0)の二つの情報の指定が2度手間であると感じられます。うまく対処する関数などありましたら教えていただけると幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/05 20:36
2017/12/05 20:38
2017/12/05 20:41
2017/12/05 21:00 編集
2017/12/06 01:13
2017/12/06 04:25
2017/12/06 07:56
2017/12/07 07:02
2017/12/07 07:25
2017/12/07 08:11