回答編集履歴

1

質問が更新されたので追記

2017/07/24 13:34

投稿

shimizukawa
shimizukawa

スコア1847

test CHANGED
@@ -1,4 +1,4 @@
1
- `list.__getitem__(self, item)` メソッドに `(slice(None, None, NOne), 0)` オブジェクトが渡され、 `list.__getitem__` はintまたはslideオブジェクトを期待しているため `TypeError('list indices must be integers or slices, not tuple')` 例外が発生します。
1
+ `list.__getitem__(self, item)` メソッドに `(slice(None, None, None), 0)` オブジェクトが渡され、 `list.__getitem__` はintまたはslideオブジェクトを期待しているため `TypeError('list indices must be integers or slices, not tuple')` 例外が発生します。
2
2
 
3
3
 
4
4
 
@@ -29,3 +29,47 @@
29
29
  TypeError: list indices must be integers or slices, not tuple
30
30
 
31
31
  ```
32
+
33
+
34
+
35
+ ----------------
36
+
37
+
38
+
39
+ (質問が更新されたので追記)
40
+
41
+
42
+
43
+ 通常のlistオブジェクトでは上記のようにエラーになりますが、これが `numpy.array` オブジェクトであれば以下の様に動作します。
44
+
45
+
46
+
47
+ ```Python
48
+
49
+ >>> import numpy as np
50
+
51
+ >>> b = np.array([[1,2,3],[4,5,6],[7,8,9]])
52
+
53
+ >>> b
54
+
55
+ array([[1, 2, 3],
56
+
57
+ [4, 5, 6],
58
+
59
+ [7, 8, 9]])
60
+
61
+ >>> a = b[:,0]
62
+
63
+ >>> a
64
+
65
+ array([1, 4, 7])
66
+
67
+ >>> b[0,:]
68
+
69
+ array([1, 2, 3])
70
+
71
+ ```
72
+
73
+ これは、 `numpy.array.__getitem__` が前述のような `(slice(None, None, None), 0)` を解釈して多次元の行列データの断面を返すように実装されているため、このような動作になります。
74
+
75
+