gpt4 book ai didi

python - 如何在数据框中执行涉及行和列的算术运算?

转载 作者:行者123 更新时间:2023-12-01 04:18:30 26 4
gpt4 key购买 nike

假设我有一个矩阵(df):

    c1     c2     c3
c1 21.7 23.4 17.3
c2 23.4 25.8 17.0
c3 17.4 17.0 23.1

我想用这个公式标准化这个矩阵:

enter image description here

生成这个新的归一化矩阵:

    c1     c2     c3
c1 1.0 0.97 0.63
c2 0.97 1.0 0.53
c3 0.63 0.53 1.0

where C'(1,2) = 23.4/(21.7+25.8-23.4)
= 0.97

我尝试过使用df.corrcoef,但结果不是我所期望的。

最佳答案

您可以使用broadcasting of numpy arrays超过diagonal数组的:

>>> arr = df.values
>>> arr
array([[ 21.7, 23.4, 17.3],
[ 23.4, 25.8, 17. ],
[ 17.4, 17. , 23.1]])
>>> arr / (np.diag(arr) + np.diag(arr)[:,np.newaxis] - arr)
array([[ 1. , 0.971 , 0.6291],
[ 0.971 , 1. , 0.5329],
[ 0.635 , 0.5329, 1. ]])

np.diag(arr) + np.diag(arr)[:,np.newaxis] 相当于 c(u,u) + c(v,v) 在你的方程中,对于每对坐标(u, v):

>>> np.diag(arr) + np.diag(arr)[:,np.newaxis]
array([[ 43.4, 47.5, 44.8],
[ 47.5, 51.6, 48.9],
[ 44.8, 48.9, 46.2]])

关于python - 如何在数据框中执行涉及行和列的算术运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34021273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com