【发布时间】:2020-11-14 18:43:20
【问题描述】:
广播只能(据我所知)从最后匹配形状的矩阵(形状[4,3,2] 可以广播形状[2]、[3,2]、[4,3,2])。但为什么呢?
考虑以下示例:
np.zeros([4,3,2])
[[[0 0]
[0 0]
[0 0]]
[[0 0]
[0 0]
[0 0]]
[[0 0]
[0 0]
[0 0]]
[[0 0]
[0 0]
[0 0]]]
为什么无法使用[1,2,3] 或[1,2,3,4] 进行广播?
添加[1,2,3](形状:[3],目标形状:[4,3,2])预期结果:
[[[1 1]
[2 2]
[3 3]]
[[1 1]
[2 2]
[3 3]]
[[1 1]
[2 2]
[3 3]]
[[1 1]
[2 2]
[3 3]]]
添加[1,2,3,4](形状:[4],目标形状:[4,3,2])预期结果:
[[[1 1]
[1 1]
[1 1]]
[[2 2]
[2 2]
[2 2]]
[[3 3]
[3 3]
[3 3]]
[[4 4]
[4 4]
[4 4]]]
或者,如果担心这种方式的多维广播,添加:
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
(形状:[4,3],目标形状:[4,3,2])预期结果:
[[[ 1 1]
[ 2 2]
[ 3 3]]
[[ 4 4]
[ 5 5]
[ 6 6]]
[[ 7 7]
[ 8 8]
[ 9 9]]
[[10 10]
[11 11]
[12 12]]]
所以基本上我说的是我看不出它找不到匹配形状的原因,并分别进行操作。如果目标矩阵中有多个维度匹配,只需自动选择最后一个,或者可以选择指定我们要执行操作的维度。
有什么想法/建议吗?
【问题讨论】: