是否有某种类型的助手可以在numpy内的多维数组中找到每个维的最小值,最大值(最好是标准偏差)?我正在寻找R中的summary()
函数之类的东西。
我的数据本质上是一个巨大的2D数组(列表列表),其中子列表包含n个维值。例如。当前我有3维属性x,y,z的数据:
a = np.random.rand(100,3)
对于每个维度(x,y,z),我想知道最小,最大,均值和标准。
我知道一个人可以遍历轴并测量这些值,例如:
for i in range(a.shape[-1]):
vals = a[:,i]
print(np.min(vals), np.max(vals), np.std(vals))
我发现自己几乎每次有新数据集时都编写代码来执行此操作。任何加快此操作的方法都将非常有用!
没有熊猫:
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)
...
使用熊猫:
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