![](/img/trans.png)
[英]Is there a difference between adding a scalar to a vector inside a for loop and outside it, using numpy?
[英]NumPy - Adding a vector multiplied by a scalar to a matrix
我是 NumPy 的新手,并尝试在不使用循环的情况下执行以下操作。
我有一个 (n, n) 方阵 A 和一个大小为 (1,n) 的向量 x,我想将向量添加到矩阵的每一行,同时将向量乘以行的索引。
即,将向量 *1 添加到第一行,将向量 *2 添加到第二行,依此类推。
同样,不允许循环,只有 NumPy 函数。
例如,给定矩阵:
[[0, 0, 0]
[0, 0, 0]
[0, 0, 0]]
和向量 [[1,1,1]]
我想得到:
[[1, 1, 1]
[2, 2, 2]
[3, 3, 3]]
我尝试使用重复来从 x 创建一个形状为 A 的矩阵,但无法管理标量乘法。 有什么有用的function/有效方法吗?
您可以使用广播来实现这一点。
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.]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.