将矩阵中的一行与标量值相乘但保留整个矩阵
multiplying one row in a matrix with a scalar value but keeping the whole matrix
我想知道如何将一个标量值乘以一个矩阵中的特定行?
我知道这里有一个类似的问题:similar
但它的不同之处在于,通过简单地进行乘法运算,我丢失了矩阵的其余部分。输出只会是该矩阵的一行。我想要整个矩阵只改变那一行。
正如@Lior T 评论的那样,在 NumPy 中执行此操作的最佳方法是使用新数组重新分配行。以下代码将第 2 行乘以 5.2,矩阵的其余部分保持不变。
>>> import numpy as np
>>> a = np.ones((5, 5))
>>> a
array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
>>> a[2] = a[2] * 5.2
>>> a
array([[1. , 1. , 1. , 1. , 1. ],
[1. , 1. , 1. , 1. , 1. ],
[5.2, 5.2, 5.2, 5.2, 5.2],
[1. , 1. , 1. , 1. , 1. ],
[1. , 1. , 1. , 1. , 1. ]])
我想知道如何将一个标量值乘以一个矩阵中的特定行?
我知道这里有一个类似的问题:similar
但它的不同之处在于,通过简单地进行乘法运算,我丢失了矩阵的其余部分。输出只会是该矩阵的一行。我想要整个矩阵只改变那一行。
正如@Lior T 评论的那样,在 NumPy 中执行此操作的最佳方法是使用新数组重新分配行。以下代码将第 2 行乘以 5.2,矩阵的其余部分保持不变。
>>> import numpy as np
>>> a = np.ones((5, 5))
>>> a
array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
>>> a[2] = a[2] * 5.2
>>> a
array([[1. , 1. , 1. , 1. , 1. ],
[1. , 1. , 1. , 1. , 1. ],
[5.2, 5.2, 5.2, 5.2, 5.2],
[1. , 1. , 1. , 1. , 1. ],
[1. , 1. , 1. , 1. , 1. ]])