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

回答編集履歴

1

追記

2018/06/10 10:56

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -1,1 +1,78 @@
1
- `X`のndimを2にする必要があります。そのコードだとforで1減ったのが見えていて、3です。
1
+ `X`のndimを2にする必要があります。そのコードだとforで1減ったのが見えていて、3です。
2
+
3
+ ### 追記
4
+ 状況的には、たぶんこんな感じになっています。
5
+
6
+ ```python
7
+ >>> import numpy as np
8
+ >>> a = np.arange(27).reshape((3,3,3)) # shapeは適当。質問者様のXとは違うと思います
9
+ >>> a
10
+ array([[[ 0, 1, 2],
11
+ [ 3, 4, 5],
12
+ [ 6, 7, 8]],
13
+
14
+ [[ 9, 10, 11],
15
+ [12, 13, 14],
16
+ [15, 16, 17]],
17
+
18
+ [[18, 19, 20],
19
+ [21, 22, 23],
20
+ [24, 25, 26]]])
21
+ >>> a.ndim
22
+ 3
23
+ >>> for x in a:
24
+ ... print(x)
25
+ ... print(x.ndim)
26
+ ...
27
+ [[0 1 2]
28
+ [3 4 5]
29
+ [6 7 8]]
30
+ 2
31
+ [[ 9 10 11]
32
+ [12 13 14]
33
+ [15 16 17]]
34
+ 2
35
+ [[18 19 20]
36
+ [21 22 23]
37
+ [24 25 26]]
38
+ 2
39
+ ```
40
+
41
+ どう直せばよいかと言うと、`X`の形式に依存します。質問の画像を見る限り、こんなshapeになっているような気がします。
42
+
43
+ ```python
44
+ >>> a = np.arange(27).reshape((9,1,3))
45
+ >>> a
46
+ array([[[ 0, 1, 2]],
47
+
48
+ [[ 3, 4, 5]],
49
+
50
+ [[ 6, 7, 8]],
51
+
52
+ [[ 9, 10, 11]],
53
+
54
+ [[12, 13, 14]],
55
+
56
+ [[15, 16, 17]],
57
+
58
+ [[18, 19, 20]],
59
+
60
+ [[21, 22, 23]],
61
+
62
+ [[24, 25, 26]]])
63
+ ```
64
+
65
+ ```python
66
+ >>> a.reshape((a.shape[0], -1))
67
+ array([[ 0, 1, 2],
68
+ [ 3, 4, 5],
69
+ [ 6, 7, 8],
70
+ [ 9, 10, 11],
71
+ [12, 13, 14],
72
+ [15, 16, 17],
73
+ [18, 19, 20],
74
+ [21, 22, 23],
75
+ [24, 25, 26]])
76
+ ```
77
+
78
+  こんな操作でいけたりしないかなぁ(当然`X`に対してこれをやる)。あるいは、データ読み込み段階でこの形になるように書き換えるか。