NumPy-将一个向量乘以一个标量加到一个矩阵上



我是NumPy的新手,尝试在不使用循环的情况下执行以下操作。

我有一个(n,n(平方矩阵a和一个大小为(1,n(的向量x,我想把向量加到矩阵的每一行,同时把向量乘以行的索引
也就是说,将向量*1添加到第一行,将向量*2添加到第二行,依此类推。
同样,循环是不允许的,只有NumPy函数。

例如,给定矩阵:
[[0,0,0]
[0,0,0]
[0],0]]

和向量[[1,1,1]]

我想得到:
[[1,1,1]
[2,2,2]
[3,3,3]]

我试着使用repeat来从x创建一个形状为a的矩阵,但无法管理标量乘法。有什么有用的功能/有效的方法吗?

您可以使用广播来实现这一点。

A = np.ones((5,5))
x = np.arange(5)
indices = np.arange(5)[None,:].T
A * x + indices
array([[0., 1., 2., 3., 4.],
[1., 2., 3., 4., 5.],
[2., 3., 4., 5., 6.],
[3., 4., 5., 6., 7.],
[4., 5., 6., 7., 8.]])

最新更新