Как из подмассивов создать самостоятельные массивы с уникальным адресом?
Есть матрица корреляции со значениями от -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])]