我有一个30x30
数组,每个元素内是一个400
值数组。
是否有一种简单的方法来获取整个“多维数据集”的标准偏差或将其重铸为30x30x400多维数据集?
In [295]: data.shape
Out[295]: (30, 30)
In [296]: data[0,0].shape
Out[296]: (400,)
执行std(data)
会得到形状为400
的数组,因此不会将其应用于整个事物。而且取结果的std是不一样的。
这是此类数组及其制作方法的示例。
a = np.zeros([3,3]).astype(object)
for i in range(3):
for j in range(3):
a[i,j] = np.array([0,i,j])
In [364]: a
Out[364]:
array([[array([0, 0, 0]), array([0, 0, 1]), array([0, 0, 2])],
[array([0, 1, 0]), array([0, 1, 1]), array([0, 1, 2])],
[array([0, 2, 0]), array([0, 2, 1]), array([0, 2, 2])]], dtype=object)
In [365]: a.shape
Out[365]: (3, 3)
In [366]: a[0,0]
Out[366]: array([0, 0, 0])
答案 0 :(得分:1)
如果您只关心std
,以下是针对您的特定情况的简单解决方案:
np.std(np.array([i for i in a.flatten()]).flatten())
答案 1 :(得分:0)
这是经过一番尝试和错误后得到的。 欢迎改进
omega = x
for dims in range(len(x.shape)):
omega = np.concatenate(omega)
y = np.reshape(omega,[3,3,4])
print(y)