如何转换以下形式的 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/

10-12 18:40