繁体   English   中英

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 ]])

您不需要重塑除数数组(它可以是一数组,如您的源数据示例中所示):

v = np.array([1, 2, 3])

把它们分开:

result = a / v

结果是:

array([[1.        , 0.5       , 0.33333333],
       [2.        , 1.        , 0.66666667],
       [3.        , 1.5       , 1.        ]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM