回答編集履歴

1

追記

2018/06/10 10:56

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -1 +1,155 @@
1
1
  `X`のndimを2にする必要があります。そのコードだとforで1減ったのが見えていて、3です。
2
+
3
+
4
+
5
+ ### 追記
6
+
7
+ 状況的には、たぶんこんな感じになっています。
8
+
9
+
10
+
11
+ ```python
12
+
13
+ >>> import numpy as np
14
+
15
+ >>> a = np.arange(27).reshape((3,3,3)) # shapeは適当。質問者様のXとは違うと思います
16
+
17
+ >>> a
18
+
19
+ array([[[ 0, 1, 2],
20
+
21
+ [ 3, 4, 5],
22
+
23
+ [ 6, 7, 8]],
24
+
25
+
26
+
27
+ [[ 9, 10, 11],
28
+
29
+ [12, 13, 14],
30
+
31
+ [15, 16, 17]],
32
+
33
+
34
+
35
+ [[18, 19, 20],
36
+
37
+ [21, 22, 23],
38
+
39
+ [24, 25, 26]]])
40
+
41
+ >>> a.ndim
42
+
43
+ 3
44
+
45
+ >>> for x in a:
46
+
47
+ ... print(x)
48
+
49
+ ... print(x.ndim)
50
+
51
+ ...
52
+
53
+ [[0 1 2]
54
+
55
+ [3 4 5]
56
+
57
+ [6 7 8]]
58
+
59
+ 2
60
+
61
+ [[ 9 10 11]
62
+
63
+ [12 13 14]
64
+
65
+ [15 16 17]]
66
+
67
+ 2
68
+
69
+ [[18 19 20]
70
+
71
+ [21 22 23]
72
+
73
+ [24 25 26]]
74
+
75
+ 2
76
+
77
+ ```
78
+
79
+
80
+
81
+ どう直せばよいかと言うと、`X`の形式に依存します。質問の画像を見る限り、こんなshapeになっているような気がします。
82
+
83
+
84
+
85
+ ```python
86
+
87
+ >>> a = np.arange(27).reshape((9,1,3))
88
+
89
+ >>> a
90
+
91
+ array([[[ 0, 1, 2]],
92
+
93
+
94
+
95
+ [[ 3, 4, 5]],
96
+
97
+
98
+
99
+ [[ 6, 7, 8]],
100
+
101
+
102
+
103
+ [[ 9, 10, 11]],
104
+
105
+
106
+
107
+ [[12, 13, 14]],
108
+
109
+
110
+
111
+ [[15, 16, 17]],
112
+
113
+
114
+
115
+ [[18, 19, 20]],
116
+
117
+
118
+
119
+ [[21, 22, 23]],
120
+
121
+
122
+
123
+ [[24, 25, 26]]])
124
+
125
+ ```
126
+
127
+
128
+
129
+ ```python
130
+
131
+ >>> a.reshape((a.shape[0], -1))
132
+
133
+ array([[ 0, 1, 2],
134
+
135
+ [ 3, 4, 5],
136
+
137
+ [ 6, 7, 8],
138
+
139
+ [ 9, 10, 11],
140
+
141
+ [12, 13, 14],
142
+
143
+ [15, 16, 17],
144
+
145
+ [18, 19, 20],
146
+
147
+ [21, 22, 23],
148
+
149
+ [24, 25, 26]])
150
+
151
+ ```
152
+
153
+
154
+
155
+  こんな操作でいけたりしないかなぁ(当然`X`に対してこれをやる)。あるいは、データ読み込み段階でこの形になるように書き換えるか。