Функция R `summary` ближайший эквивалент в python - PullRequest
1 голос
/ 24 марта 2020

Есть ли какой-нибудь помощник, чтобы найти минимальное, максимальное (и в идеале стандартное отклонение) каждого измерения в многомерном массиве в пределах numpy? Я ищу что-то вроде функции summary() в R.

Мои данные по сути являются огромным 2D-массивом (списком списков), в котором подсписки содержат n размерных значений. Например, в настоящее время у меня есть данные с 3-х мерными атрибутами x, y, z:

a = np.random.rand(100,3)

Для каждого из этих измерений (x, y, z) я хочу знать min, max, среднее и std.

Я знаю, что можно провести l oop по осям и измерить эти значения, например:

for i in range(a.shape[-1]):
  vals = a[:,i]
  print(np.min(vals), np.max(vals), np.std(vals))

Я пишу код, который делает это почти каждый раз, когда у меня есть новый набор данных , Любой способ ускорить эту операцию был бы чрезвычайно полезным!

1 Ответ

1 голос
/ 25 марта 2020

Без pandas:

from scipy import stats
import numpy as np

a = np.random.rand(100,3)
summary = stats.describe(a, axis = 0)

print(summary.mean)
print(summary.minmax)
...

Использование pandas:

import pandas as pd

summary_across_rows = pd.DataFrame(a).describe() # across axis=0
print(summary)
                0           1           2
count  100.000000  100.000000  100.000000
mean     0.495204    0.573827    0.476202
std      0.275131    0.246189    0.271626
min      0.005202    0.037195    0.023595
25%      0.295210    0.399358    0.258712
50%      0.512023    0.562181    0.417322
75%      0.710216    0.790970    0.712047
max      0.998371    0.997717    0.980840

Note: for the summary across the other dimension you need:
summary_across_columns = pd.DataFrame(a.T).describe() # across axis=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...