def scipy_describe(x, **kwargs):
print('Start scipy_describe')
band_arr = getattr(x, TEMP_BAND)
cols = ('var', 'skew', 'kurt', 'min', 'max', 'median', 'std', 'np_skew')
inter = tuple(combinations(range(len(cols)), 2))
cols = cols + tuple((cols[i], cols[j]) for i, j in inter)
num_cols = len(cols)
num_rows = np.prod(band_arr.shape[1:])
new_arr = np.empty((num_rows, num_cols))
for row, (i, j) in enumerate(product(*(range(s) for s in band_arr.values.shape[1:]))):
values = band_arr.values[:, i, j]
d = describe(values)
t = (d.variance, d.skewness, d.kurtosis, d.minmax[0], d.minmax[1])
median = np.median(values)
std = np.std(values)
non_param_skew = (d.mean - median) / std
r = t + (median, std, non_param_skew)
interact = tuple(r[i] * r[j] for i, j in inter)
new_arr[row, :] = r + interact
attrs = copy.deepcopy(x.attrs)
attrs.update(kwargs)
da = xr.DataArray(new_arr,
coords=[('space', np.arange(num_rows)),
('band', np.arange(num_cols))],
dims=('space', 'band'),
attrs=attrs)
return ElmStore({'flat': da}, attrs=attrs, add_canvas=False)
评论列表
文章目录