teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

題名の追記

2017/12/11 01:04

投稿

simasima
simasima

スコア49

title CHANGED
@@ -1,1 +1,1 @@
1
- N次元の配列を特定の2次元配列としてsplit したい
1
+ N次元の配列を2次元配列として分割したい。(配列arr を 軸 i, j により分割する split(arr, i, j) のような関数を制作したい
body CHANGED
File without changes

1

追記

2017/12/11 01:04

投稿

simasima
simasima

スコア49

title CHANGED
File without changes
body CHANGED
@@ -23,32 +23,28 @@
23
23
  ```
24
24
  のように簡単にsplitすることができます。
25
25
 
26
+ 多次元の場合は
27
+ ```python
26
- 多次元の場合はこのような関数がないと思われるのですが、どのように対応するのがよろしいでしょうか。
28
+ A = np.arange(24).reshape(2,4,3)
29
+ # array([[[ 0, 1, 2],
30
+ # [ 3, 4, 5],
31
+ # [ 6, 7, 8],
32
+ # [ 9, 10, 11]],
33
+ #
34
+ # [[12, 13, 14],
35
+ # [15, 16, 17],
36
+ # [18, 19, 20],
37
+ # [21, 22, 23]]])
27
38
 
28
- 具体的には
29
- ```pytho
39
+ C = [A[i,:,:] for i in range(A.shape[0])]
30
- [[[ 0 1 2]
40
+ # [array([[ 0, 1, 2],
31
- [ 3 4 5]
41
+ # [ 3, 4, 5],
32
- [ 6 7 8]
42
+ # [ 6, 7, 8],
33
- [ 9 10 11]]
43
+ # [ 9, 10, 11]]),
44
+ # array([[12, 13, 14],
45
+ # [15, 16, 17],
46
+ # [18, 19, 20],
47
+ # [21, 22, 23]])]
34
48
 
35
- [[12 13 14]
36
- [15 16 17]
37
- [18 19 20]
38
- [21 22 23]]]
39
-
40
49
  ```
41
- の3次元配列から
42
-
43
-
44
- ```python
45
- [array([[ 0 1 2]
46
- [ 3 4 5]
47
- [ 6 7 8]
48
- [ 9 10 11]])
49
- array([[12 13 14]
50
- [15 16 17]
51
- [18 19 20]
52
- [21 22 23]])
53
- ```
54
- のようなをしいと考えていす。
50
+ のように分割を行うことができますが、 A[i,:,:]とA.shape(0)の二つの情報の指定が2度手間であると感じられます。うまく対処する関数どあしたら教えていただけると幸いです。