提问人:안태찬 提问时间:3/26/2022 更新时间:3/26/2022 访问量:21
在 python 中处理 2D 数组数据 [已关闭]
handing 2D array data in python [closed]
问:
我正在尝试在 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
我的目的是得到如下结果(将每行除以行中所有元素的总和)。
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)],
]
答:
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 = logits
dtype
int
float
0赞
Emmanuel
3/26/2022
哦,你是对的。我没有注意到这一点。谢谢。在这种情况下,op 只需要指定要浮动的 logits 类型。我是trynna tag op,但我没有他们名字的字符。请标记他们,以便他们看到这一点。
评论