gpt4 book ai didi

arrays - Python获取矩阵每一行中的第二大元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:47:39 24 4
gpt4 key购买 nike

我从相关矩阵开始,这意味着第 i、j 个条目将是第 i 个元素和第 j 个元素之间的相关性(因此对角线将为 1)。我试图找到每个元素与另一个元素的最大相关性(不包括自身,因为 1 的列表对我的情况没有帮助)。

1    0.7  0.4  0.1
0.7 1 0.3 0.2
0.4 0.3 1 0.5
0.1 0.2 0.5 1

假设我有上面的矩阵。我想要一些像
(最大相关性,第 i 个元素,第 j 个元素)。在上面的矩阵中,我想得到
[(0.7, 0, 1), (0.7, 1, 0), (0.5, 2, 3), (0.5, 3, 2)]
因此。

解决这个问题的好方法是什么?
我将矩阵作为 Pandas 数据框。索引和列具有相同的名称,暂时假设为 [0, 1, 2, 3]。目前我只想做类似的事情

D = {}
for i in df.columns:
max = (0, 0, 0)
for j in df.columns:
if i==j:
continue
element = df.loc[i,j]
if element > max[0]:
max = (element, i, j)
D[i] = max

这可以做得更好/更快吗?是否有内置的方法可以改进它?

最佳答案

首先,您可以用小于任何相关系数的值填充对角线。有一个标准的 numpy 函数可以做到这一点:

np.fill_diagonal(df.values, -2.)

之后你只需要在每一列中找到最大值和它的索引(DataFrame 有计算两者的方法)并压缩结果:

list(zip(df.max(), df.columns, df.idxmax()))

关于arrays - Python获取矩阵每一行中的第二大元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42958452/

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