回答編集履歴
1
説明に誤りがあった。
test
CHANGED
@@ -1,6 +1,36 @@
|
|
1
1
|
凄く前の質問ですが自己満足のために書きます。
|
2
2
|
|
3
3
|
|
4
|
+
|
5
|
+
スライスの各座標に対応する引数はブロードキャストされるので、
|
6
|
+
|
7
|
+
arr[[0,2],2]はarr[[0,2],[2,2]]となります。
|
8
|
+
|
9
|
+
arrのインデックス0と2それぞれのインデックス2, 2となるので[2,8]になります。
|
10
|
+
|
11
|
+
しかし、arr[[0,2],2:]はスライスとは異なります。
|
12
|
+
|
13
|
+
試しにarr[[0,2],1:]でやってみると、
|
14
|
+
|
15
|
+
```python
|
16
|
+
|
17
|
+
>>> arr[[0,2],1:]
|
18
|
+
|
19
|
+
array([[1, 2],
|
20
|
+
|
21
|
+
[7, 8]])
|
22
|
+
|
23
|
+
```
|
24
|
+
|
25
|
+
となり、インデックス0と2それぞれの[1:]が出力されます。
|
26
|
+
|
27
|
+
[2:]でも同様の処理がなされるため、
|
28
|
+
|
29
|
+
arr[[0,2],2:]はインデックス0と2の[2:]が出力されて[[2],[8]]になります。
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
###個人的な考え方
|
4
34
|
|
5
35
|
Numpyはスライス時にもブロードキャストを行うので、
|
6
36
|
|
@@ -34,7 +64,7 @@
|
|
34
64
|
|
35
65
|
|
36
66
|
|
37
|
-
ではどのような計算が行われているかというと、逆にスライスの第一引数が
|
67
|
+
ではどのような計算が行われているかというと、逆にスライスの第一引数が変形されているのです。
|
38
68
|
|
39
69
|
|
40
70
|
|
@@ -52,7 +82,7 @@
|
|
52
82
|
|
53
83
|
となっています。
|
54
84
|
|
55
|
-
第一引数が
|
85
|
+
第一引数が変形されているので、計算を順に表してみましょう。
|
56
86
|
|
57
87
|
|
58
88
|
|