gpt4 book ai didi

python - 根据条件从任何列/行中选择值

转载 作者:太空宇宙 更新时间:2023-11-03 15:06:49 25 4
gpt4 key购买 nike

我有一个数据帧形式的相关矩阵。像这样的东西:

       xyz   abc  def
xyz 1 0.1 -0.2
abc 0.1 1 0.3
def -0.2 0.3 1

我需要能够选择高于或低于特定阈值的所有值,但当然它们可以在任何行或列中。

例如,选择所有大于 0.2 的值。有两种结果:

(def,abc) 和 (abc,def)

我不确定如何执行此操作,因为它涉及根据每一行/列中的条件搜索值。理想情况下,输出应该采用易于识别对的格式(例如:元组列表或类似的东西)

编辑:哦,当然所有相同的列/行也会出现在上面示例的结果中(即:xyz/xyz、abc/abc、def/def)

最佳答案

下面是一种使用np.triu 屏蔽上三角矩阵并通过stack reshape 相关矩阵的方法。

import pandas as pd
import numpy as np

# simulate some data to generate corr_mat
# ==============================================
np.random.seed(0)
data = np.random.multivariate_normal([0,0,0], [[1,0.1,-0.2],[0.1,1,0.3],[-0.2,0.3,1]], 10000)
df = pd.DataFrame(data, columns='xyz abc def'.split())
corr_mat = df.corr()
corr_mat

xyz abc def
xyz 1.0000 0.1216 -0.1901
abc 0.1216 1.0000 0.3014
def -0.1901 0.3014 1.0000

# processing
# =======================================
# mask on lower-triangle only
mask = np.ones_like(corr_mat, dtype=np.bool)
mask[np.triu_indices_from(mask)] = False
mask

array([[False, False, False],
[ True, False, False],
[ True, True, False]], dtype=bool)

# reshape the correlation matrix, and select corr > 0.2
corr_stacked = corr_mat.stack()
corr_stacked[(corr_stacked > 0.2) & (mask.ravel())]

def abc 0.3014
dtype: float64

# you can reset_index to put multi-level index to columns

关于python - 根据条件从任何列/行中选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31750595/

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