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

回答編集履歴

2

修正

2021/12/30 06:54

投稿

ppaul
ppaul

スコア24672

answer CHANGED
@@ -2,17 +2,53 @@
2
2
  axis=1ならば第二引数の要素分だけ各行で要素がシフトすると認識しておりました。
3
3
 
4
4
  違います。
5
- axis=0とaxis=1は、rollする軸です。
5
+ axis=は、rollする軸です。3次元とかで考えてみたほうが理解しやすいと思います。
6
6
 
7
7
  ```python
8
- >>> a = np.arange(6).reshape(2,3)
8
+ >>> a = np.arange(60).reshape(3,4,5)
9
- >>> print(a)
10
- [[0 1 2]
11
- [3 4 5]]
12
9
  >>> np.roll(a, 1, axis=0)
13
- array([[3, 4, 5],
10
+ array([[[40, 41, 42, 43, 44],
11
+ [45, 46, 47, 48, 49],
14
- [0, 1, 2]])
12
+ [50, 51, 52, 53, 54],
13
+ [55, 56, 57, 58, 59]],
14
+
15
+ [[ 0, 1, 2, 3, 4],
16
+ [ 5, 6, 7, 8, 9],
17
+ [10, 11, 12, 13, 14],
18
+ [15, 16, 17, 18, 19]],
19
+
20
+ [[20, 21, 22, 23, 24],
21
+ [25, 26, 27, 28, 29],
22
+ [30, 31, 32, 33, 34],
23
+ [35, 36, 37, 38, 39]]])
15
24
  >>> np.roll(a, 1, axis=1)
25
+ array([[[15, 16, 17, 18, 19],
26
+ [ 0, 1, 2, 3, 4],
27
+ [ 5, 6, 7, 8, 9],
28
+ [10, 11, 12, 13, 14]],
29
+
30
+ [[35, 36, 37, 38, 39],
31
+ [20, 21, 22, 23, 24],
32
+ [25, 26, 27, 28, 29],
33
+ [30, 31, 32, 33, 34]],
34
+
35
+ [[55, 56, 57, 58, 59],
36
+ [40, 41, 42, 43, 44],
37
+ [45, 46, 47, 48, 49],
38
+ [50, 51, 52, 53, 54]]])
39
+ >>> np.roll(a, 1, axis=2)
16
- array([[2, 0, 1],
40
+ array([[[ 4, 0, 1, 2, 3],
41
+ [ 9, 5, 6, 7, 8],
42
+ [14, 10, 11, 12, 13],
43
+ [19, 15, 16, 17, 18]],
44
+
45
+ [[24, 20, 21, 22, 23],
46
+ [29, 25, 26, 27, 28],
47
+ [34, 30, 31, 32, 33],
17
- [5, 3, 4]])
48
+ [39, 35, 36, 37, 38]],
49
+
50
+ [[44, 40, 41, 42, 43],
51
+ [49, 45, 46, 47, 48],
52
+ [54, 50, 51, 52, 53],
53
+ [59, 55, 56, 57, 58]]])
18
54
  ```

1

例を追加

2021/12/30 06:54

投稿

ppaul
ppaul

スコア24672

answer CHANGED
@@ -2,4 +2,17 @@
2
2
  axis=1ならば第二引数の要素分だけ各行で要素がシフトすると認識しておりました。
3
3
 
4
4
  違います。
5
- axis=0とaxis=1は、rotateする軸です。
5
+ axis=0とaxis=1は、rollする軸です。
6
+
7
+ ```python
8
+ >>> a = np.arange(6).reshape(2,3)
9
+ >>> print(a)
10
+ [[0 1 2]
11
+ [3 4 5]]
12
+ >>> np.roll(a, 1, axis=0)
13
+ array([[3, 4, 5],
14
+ [0, 1, 2]])
15
+ >>> np.roll(a, 1, axis=1)
16
+ array([[2, 0, 1],
17
+ [5, 3, 4]])
18
+ ```