回答編集履歴
2
誤字訂正
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
代入の例も追加しました
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/)
|