回答編集履歴

1

d

2019/12/20 16:12

投稿

tiitoi
tiitoi

スコア21956

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個目の要素にアクセスしたい場合は、内部の1次元配列の先頭から 2*4=8 bytes 目を参照すればよいということがわかります。
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個目の要素にアクセスしたい場合は、内部の1次元配列の 末尾から -2*4=-8 bytes 目を参照すればよいということがわかります。
83
+ ストライドは -4 bytes となっていて、b のインデックスが2の要素にアクセスしたい場合は、内部の1次元配列の 末尾から -2*4=-8 bytes 目を参照すればよいということがわかります。
66
84
 
67
85
 
68
86