计算数组中每个元素的平均值的平方偏差

2024-03-29 09:03:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个形状为(128,116,116,1)的数组,其中第1维是受试者的数量,第2维和第3维是数据

我试图计算所有128名受试者在每个位置(即(0,0)、(0,1)、(1,0)等,直到(116116))的方差(与平均值的平方偏差),形成一个形状为(116,116)的数组

有人能告诉我如何做到这一点吗

谢谢大家!


Tags: 数据数量数组平均值偏差形状受试者方差
1条回答
网友
1楼 · 发布于 2024-03-29 09:03:13

假设我们有一个多维列表a的形状(3,2,2)

import numpy as np
a =
[
    [
        [1,1],
        [1,1]
    ],
    [
        [2,2],
        [2,2]
    ],
    [
        [3,3],
        [3,3]
    ],
]

np.var(a, axis = 0) # results in:
> array([[0.66666667, 0.66666667],
>        [0.66666667, 0.66666667]])

如果您想有效地计算所有128个主题(即axis0)的方差,我看不到使用statistics包的方法,因为它不接受多列表作为输入。因此,您必须编写自己的代码/逻辑,并在主题上添加循环
但是,使用^{} 函数,我们可以轻松计算所有128个主题中每个“数据点”(索引元组)的方差


旁注:您提到了statistics.variance。但是,仅当您从您链接的文档中提到的人群中采集样本时,才可使用该方法。如果您选择手动路径,您将使用statistics.pvariance,因为我们是在整个数据集上计算它的。 这里可以看出区别:

statistics.pvariance([1,2,3])
> 0.6666666666666666 # (correct)
statistics.variance([1,2,3])
> 1 # (incorrect)
np.var([1,2,3])
> 0.6666666666666666 # (np.var also gives the correct output)

相关问题 更多 >