取对象数组的std

时间:2019-03-14 13:48:02

标签: python arrays

我有一个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])

2 个答案:

答案 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)