4

如何转换以下 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)。如果有一种方法不需要像 BI 那样实际复制值,那么我会更喜欢这种方法(我猜明显的 for 循环会太慢)。

4

1 回答 1

3

您已经在评论中提到了答案:

A[:,:,None] * C

之所以可行,是因为 numpy 将None切片解释为newaxis. 从文档

选择元组中的每个 newaxis 对象都用于将结果选择的维度扩展一个单位长度维度。添加的维度是新轴对象在选择元组中的位置。

所以该切片相当于这样做:

A.reshape(len(A), -1, 1)*C

而且由于我假设这些是 numpy arrays,所以默认情况下,乘法当然是逐元素的。

于 2013-10-23T12:39:06.683 回答