在 python 中处理 2D 数组数据 [已关闭]

handing 2D array data in python [closed]

提问人:안태찬 提问时间:3/26/2022 更新时间:3/26/2022 访问量:21

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将有助于其他人回答这个问题。

去年关闭。

我正在尝试在 google colab 中实现以下代码,但进展不顺利。

logits = np.arange(9).reshape((3,3))
ret = logits
sum_array = np.sum(logits, axis = 1)

rows = len(logits)
cols = len(logits[0])

for i in range(rows):
  for j in range(cols):
      ret[i, j] = ret[i, j] / sum_array[i]

print("---------------Final output------------------------------------")
ret

结果如下。enter image description here

我的目的是得到如下结果(将每行除以行中所有元素的总和)。

logits = 
[ 
  [0, 1, 2],
  [3, 4, 5],
  [6, 7, 8],
]

results = 
[ 
  [0/(1+2+3), 1/(1+2+3), 2/(1+2+3)],
  [3/(4+5+6), 4/(4+5+6), 5/(4+5+6)],
  [6/(7+8+9), 7/(7+8+9), 8/(7+8+9)],
] 

评论

0赞 Michael Szczesny 3/26/2022
这回答了你的问题吗?numpy 除以行总和
0赞 Michael Szczesny 3/26/2022
说明和示例代码不匹配。

答:

1赞 Emmanuel 3/26/2022 #1

这应该对你有用。您可能需要编辑您的帖子。最后一个单元格中的总和不正确。

logits = np.arange(9).reshape((3,3))

dividors = [[sum(row)] for row in logits]

ret = logits/dividors

测试:

print(ret)

输出:

[[0.         0.33333333 0.66666667]
 [0.25       0.33333333 0.41666667]
 [0.28571429 0.33333333 0.38095238]]

评论

2赞 blarg 3/26/2022
原始代码失败的原因是因为它以 开头,它修复了 ,而不是 。这会导致所有元素的除法结果变为 0。ret = logitsdtypeintfloat
0赞 Emmanuel 3/26/2022
哦,你是对的。我没有注意到这一点。谢谢。在这种情况下,op 只需要指定要浮动的 logits 类型。我是trynna tag op,但我没有他们名字的字符。请标记他们,以便他们看到这一点。