Python - 将每一行除以一个向量
Python - Divide each row by a vector
我有一个 10x10 矩阵,我想用向量的元素划分矩阵的每一行。
例如:
假设我有一个 3x3 矩阵
1 1 1
2 2 2
3 3 3
和一个向量[1, 2, 3]
那这就是我想做的操作:
1/1 1/2 1/3
2/1 2/1 2/3
3/1 3/2 3/3
即,将行的元素除以向量的元素(A python 列表)
我可以使用 for 循环来做到这一点。但是,在 python 中有没有更好的方法来执行此操作?
您应该研究一下 numpy 中的广播。对于您的示例,这是解决方案:
a = np.array([[1, 1, 1], [2, 2, 2], [3, 3, 3]])
b = np.array([1, 2, 3]).reshape(1, 3)
c = a / b
print(c)
>>> [[1. 0.5 0.33333333]
[2. 1. 0.66666667]
[3. 1.5 1. ]]
第一个源数组应创建为 Numpy 数组:
a = np.array([
[ 1, 1, 1 ],
[ 2, 2, 2 ],
[ 3, 3, 3 ]])
您不需要重塑除数数组(它可以是 1-D 数组,
如您的源数据示例中所示):
v = np.array([1, 2, 3])
将它们分开:
result = a / v
结果是:
array([[1. , 0.5 , 0.33333333],
[2. , 1. , 0.66666667],
[3. , 1.5 , 1. ]])
我有一个 10x10 矩阵,我想用向量的元素划分矩阵的每一行。
例如: 假设我有一个 3x3 矩阵
1 1 1
2 2 2
3 3 3
和一个向量[1, 2, 3]
那这就是我想做的操作:
1/1 1/2 1/3
2/1 2/1 2/3
3/1 3/2 3/3
即,将行的元素除以向量的元素(A python 列表)
我可以使用 for 循环来做到这一点。但是,在 python 中有没有更好的方法来执行此操作?
您应该研究一下 numpy 中的广播。对于您的示例,这是解决方案:
a = np.array([[1, 1, 1], [2, 2, 2], [3, 3, 3]])
b = np.array([1, 2, 3]).reshape(1, 3)
c = a / b
print(c)
>>> [[1. 0.5 0.33333333]
[2. 1. 0.66666667]
[3. 1.5 1. ]]
第一个源数组应创建为 Numpy 数组:
a = np.array([
[ 1, 1, 1 ],
[ 2, 2, 2 ],
[ 3, 3, 3 ]])
您不需要重塑除数数组(它可以是 1-D 数组, 如您的源数据示例中所示):
v = np.array([1, 2, 3])
将它们分开:
result = a / v
结果是:
array([[1. , 0.5 , 0.33333333],
[2. , 1. , 0.66666667],
[3. , 1.5 , 1. ]])