【问题标题】:Apply operations over each row in array (Python)对数组中的每一行应用操作(Python)
【发布时间】:2022-01-12 16:51:00
【问题描述】:

我有一个数组(3 x 3),需要输出相同大小的数组,其中每个值除以行上的累积总和。

A = np.array([ [1,4,1], [4,1,9], [1,9,1]])
ideal_output = [[1/6, 4/6, 1/6], [4/14, 1/14, 9/14], [1/11, 9/11, 1/11]]

当前代码,但输出的尺寸错误:

output = []
denom = 0
for i in A:
    value_sum = np.cumsum(i)
    denom += value_sum
for i in A:
    result= i / denom
    output.append(result)

【问题讨论】:

    标签: python arrays


    【解决方案1】:
    > A / A.sum(axis=0)[:,None]
    array([[0.16666667, 0.66666667, 0.16666667],
           [0.28571429, 0.07142857, 0.64285714],
           [0.09090909, 0.81818182, 0.09090909]])
    

    【讨论】:

    • 对列求和(示例数据是对称的:行和列的总和相等)。 A / A.sum(1, keepdims=True) 避免重塑。
    • @MichaelSzczesny 如果您的输入是对称的(我没有注意到),那就太好了!直到关于keepdims
    【解决方案2】:

    你可以这样做:

    ideal_output = (A.T/A.sum(axis=1)).T

    希望这能解决您的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-13
      • 1970-01-01
      相关资源
      最近更新 更多