回答編集履歴
1
d
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
`data[::-1]` してから sort されるという認識は正しいですが、ソート前の
|
5
|
+
`data[::-1]` してから sort されるという認識は正しいですが、ソート前の配列がどのような並び順であろうとも、ソート後の結果は同じになります。
|
6
6
|
|
7
7
|
numpy の sort は昇順ソート (小さい順) される仕様です。
|
8
8
|
|
@@ -18,15 +18,33 @@
|
|
18
18
|
|
19
19
|
```python
|
20
20
|
|
21
|
+
|
22
|
+
|
21
23
|
import numpy as np
|
22
24
|
|
23
25
|
|
24
26
|
|
25
27
|
a = np.array([9, 2, 3, 4, 10, 6, 7, 8, 1, 5])
|
26
28
|
|
29
|
+
|
30
|
+
|
31
|
+
# 小さい順
|
32
|
+
|
27
33
|
b = np.sort(a)
|
28
34
|
|
29
35
|
print(b) # [ 1 2 3 4 5 6 7 8 9 10]
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
# 大きい順にソートしたい場合はあとから反転
|
40
|
+
|
41
|
+
print(b[::-1]) # [10 9 8 7 6 5 4 3 2 1]
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
# もしくは1次元配列なら組み込み関数 sorted()
|
46
|
+
|
47
|
+
print(sorted(b, reverse=True)) # [10 9 8 7 6 5 4 3 2 1]
|
30
48
|
|
31
49
|
```
|
32
50
|
|
@@ -56,13 +74,13 @@
|
|
56
74
|
|
57
75
|
今回のストライドを確認すると、4 bytes となっています。(int32型は1つの要素が4バイトで表される)
|
58
76
|
|
59
|
-
なので、a の2
|
77
|
+
なので、a のインデックスが2の要素にアクセスしたい場合は、内部の1次元配列の先頭から 2*4=8 bytes 目を参照すればよいということがわかります。
|
60
78
|
|
61
79
|
|
62
80
|
|
63
81
|
今、`b = a[::-1]` とした場合、これは `a` を逆順にした別の配列 `b` というのが作られるわけではなく、ストライドで内部の1次元配列のアクセスの仕方を変更するだけで、実態は `a` と同じものになります。
|
64
82
|
|
65
|
-
ストライドは -4 bytes となっていて、b の2
|
83
|
+
ストライドは -4 bytes となっていて、b のインデックスが2の要素にアクセスしたい場合は、内部の1次元配列の 末尾から -2*4=-8 bytes 目を参照すればよいということがわかります。
|
66
84
|
|
67
85
|
|
68
86
|
|