Как из подмассивов создать самостоятельные массивы с уникальным адресом?

Есть матрица корреляции со значениями от -1 до 1. Нам необходимо удалить все ненужные значения в этой матрице, например: все значения меньше -0,2 и больше 0,2. Удаляем их. Вместо удаленных значений остаются NaN. Наша цель - избавиться от Nan. Получившийся массив разбиваем по столбцам. Получается переменная с подмассивами.

np.random.seed(31415)
df = pd.DataFrame(np.random.randint(20, size=(10, 5)), columns=list("abcde"))
df_corr = df.corr()
df_corr = df_corr[df_corr.abs().le(0.2)]
b = np.hsplit(df_corr, 5)

Вопрос: Как эти подмассивы сделать самостоятельными массивами с присвоением уникального адреса автоматически (переменной), попутно избавившись в них от Nan, например при помощи df.dropna(how='all'), чтобы не обрабатывать каждый отдельно вручную?


Ответы (1 шт):

Автор решения: strawdog

Если я правильно понял вопрос:

import pandas as pd

np.random.seed(31415)
df = pd.DataFrame(np.random.randint(20, size=(10, 5)), columns=list("abcde"))
df_corr = df.corr()
df_corr = df_corr[df_corr.abs().le(0.2)]
          a         b         c         d         e
a       NaN       NaN       NaN -0.000653  0.076438
b       NaN       NaN -0.096274 -0.088437       NaN
c       NaN -0.096274       NaN -0.184259 -0.035054
d -0.000653 -0.088437 -0.184259       NaN       NaN
e  0.076438       NaN -0.035054       NaN       NaN

делаем просто:

s = [df_corr[col].dropna().values for col in df_corr.columns]

тогда s:

[array([-0.00065349,  0.07643783]),
 array([-0.09627375, -0.08843669]),
 array([-0.09627375, -0.18425867, -0.03505434]),
 array([-0.00065349, -0.08843669, -0.18425867]),
 array([ 0.07643783, -0.03505434])]

→ Ссылка