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

回答編集履歴

2

誤字訂正

2020/04/30 02:53

投稿

segavvy
segavvy

スコア1038

answer CHANGED
@@ -1,4 +1,4 @@
1
- 私もあまり自信はないのですが、この代入ではブロードキャストは行われていないと思います。
1
+ 私もあまり自信はないのですが、この代入では次元を拡張するブロードキャストは行われていないと思います。
2
2
 
3
3
  `col[:, :, y, x, :, :] = img[:, :, y:y_max:stride, x:x_max:stride]`の式で代入先になっている左辺の`col[:, :, y, x, :, :]`は一見すると6次元に見えますが、実はもう4次元になっています。そのため、左右で次元数は揃った状態です。
4
4
 

1

代入の例も追加しました

2020/04/30 02:53

投稿

segavvy
segavvy

スコア1038

answer CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  なぜ6次元の`col`が4次元になっているのかというと、3番目と4番目の指定をスライスではなく`y`と`x`のスカラー値で指定しているためです。
6
6
 
7
- 以下、簡単な例です。
7
+ 以下、次元数が変わる簡単な例です。
8
8
 
9
9
  ```python
10
10
  a = np.zeros((2,3,4))
@@ -16,5 +16,20 @@
16
16
  # (2, 4)  ←2次元になります!
17
17
  ```
18
18
 
19
+ 以下、代入の例です。
20
+
21
+ ```Python
22
+ a = np.zeros((2,3,4))
23
+ a[:, 1, :] = [[1, 2, 3, 4], [5, 6, 7, 8]]
24
+ print(a)
25
+ # [[[ 0. 0. 0. 0.]
26
+ # [ 1. 2. 3. 4.]
27
+ # [ 0. 0. 0. 0.]]
28
+ #
29
+ # [[ 0. 0. 0. 0.]
30
+ # [ 5. 6. 7. 8.]
31
+ # [ 0. 0. 0. 0.]]]
32
+ ```
33
+
19
34
  こちらの解説が参考になるかと思います。
20
35
  [NumPy配列ndarrayのスライスによる部分配列の選択と代入](https://note.nkmk.me/python-numpy-ndarray-slice/)