使用np.eye
忽略對角線值並找到所有具有某個值的絕對值大於閾值的列。使用邏輯否定作爲索引和列的掩碼。
你的榜樣
m = ~(corr.mask(np.eye(len(corr), dtype=bool)).abs() > 0.75).any()
raw = corr.loc[m, m]
工作實例
np.random.seed([3,1415])
data = pd.DataFrame(
np.random.randint(10, size=(10, 10)),
columns=list('ABCDEFGHIJ'))
data
A B C D E F G H I J
0 0 2 7 3 8 7 0 6 8 6
1 0 2 0 4 9 7 3 2 4 3
2 3 6 7 7 4 5 3 7 5 9
3 8 7 6 4 7 6 2 6 6 5
4 2 8 7 5 8 4 7 6 1 5
5 2 8 2 4 7 6 9 4 2 4
6 6 3 8 3 9 8 0 4 3 0
7 4 1 5 8 6 0 8 7 4 6
8 3 5 8 5 1 5 1 4 3 9
9 5 5 7 0 3 2 5 8 8 9
corr = data.corr()
corr
A B C D E F G H I J
A 1.00 0.22 0.42 -0.12 -0.17 -0.16 -0.11 0.35 0.13 -0.06
B 0.22 1.00 0.10 -0.08 -0.18 0.07 0.33 0.12 -0.34 0.17
C 0.42 0.10 1.00 -0.08 -0.41 -0.12 -0.42 0.55 0.20 0.34
D -0.12 -0.08 -0.08 1.00 -0.05 -0.29 0.27 0.02 -0.45 0.11
E -0.17 -0.18 -0.41 -0.05 1.00 0.47 0.00 -0.38 -0.19 -0.86
F -0.16 0.07 -0.12 -0.29 0.47 1.00 -0.62 -0.67 -0.08 -0.54
G -0.11 0.33 -0.42 0.27 0.00 -0.62 1.00 0.22 -0.40 0.07
H 0.35 0.12 0.55 0.02 -0.38 -0.67 0.22 1.00 0.50 0.59
I 0.13 -0.34 0.20 -0.45 -0.19 -0.08 -0.40 0.50 1.00 0.40
J -0.06 0.17 0.34 0.11 -0.86 -0.54 0.07 0.59 0.40 1.00
m = ~(corr.mask(np.eye(len(corr), dtype=bool)).abs() > 0.5).any()
m
A True
B True
C False
D True
E False
F False
G False
H False
I True
J False
dtype: bool
raw = corr.loc[m, m]
raw
A B D I
A 1.00 0.22 -0.12 0.13
B 0.22 1.00 -0.08 -0.34
D -0.12 -0.08 1.00 -0.45
I 0.13 -0.34 -0.45 1.00
當應用上面的代碼中,我得到NAS進行一些細胞是否正常? –
取決於。爲了讓我知道,我需要想象一個可能發生的情景,或者你可以提出一個問題,你在哪裏提供一個它發生的樣本數據集。步驟如下:1.提供最小的數據集以產生問題。 2.描述你正在嘗試做什麼。 3.你用來嘗試你正在嘗試的代碼。 4.爲什麼結果不符合你的預期。 5.代表您所期望的數據集。 – piRSquared