如何转换以下形式的 numpy 数组 A
[[1,2]
[3,4]]
变成B的形式
[[[1,1,1],[2,2,2]]
[[3,3,3],[4,4,4]]]
这样我就可以用 C 进行逐元素乘法
[[[ 5, 6, 7],[ 8, 9,10]]
[[11,12,13],[13,15,16]]]
?
原始问题是将标量与向量相乘,例如
4 * [13,15,16]
。但是我有一个标量矩阵(A)而不是标量,我有一个矢量矩阵(C)而不是矢量。如果有一种方法没有像 B 那样实际复制值,我更喜欢这样(我猜明显的 for 循环会太慢)。 最佳答案
您已经在评论中提到了答案:
A[:,:,None] * C
这样做的原因是因为 numpy 将
None
切片解释为 newaxis
。来自 the docs :所以那个切片相当于这样做:
A.reshape(len(A), -1, 1)*C
因为我假设这些是 numpy
array
s,所以乘法当然是默认的元素。关于python - 如何将标量矩阵与向量矩阵进行元素乘法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19541392/