我有一个零维numpy
标量s
和一个二维numpy
矩阵m
。我想形成一个向量矩阵,其中的所有元素都m
与配对,s
如下例所示:
import numpy as np
s = np.asarray(5)
m = np.asarray([[1,2],[3,4]])
# Result should be as follows
array([[[5, 1],
[5, 2]],
[[5, 3],
[5, 4]]])
换句话说,我想np.asarray([s, m])
在 的最低级别上逐元素地矢量化操作。对于内的m
任何多维数组,是否有一种明显的方法来做到这一点?m
numpy
我确信这个在某个地方,但我无法用语言表达,也找不到它。如果你能找到它,请随时将我重定向到那里。
一种可能的解决方案是使用
broadcast_to
和stack
函数将两个数组s
和m
组合成一个沿新轴的数组。步骤如下:首先,
np.broadcast_to(s, m.shape)
扩展数组的形状s
以匹配数组的形状,m
而无需复制数据。然后,
np.stack([np.broadcast_to(s, m.shape), m], axis=-1)
加入广播s
并m
沿着新的最后一个轴输出:
没
stack
问题。但由于s
需要重复,一个好的替代方案是创建所需形状的零数组,并允许broadcasting
填充列: