计算数组中每个元素与平均值的平方偏差
Calculate squared deviation from the mean for each element in array
我有一个形状为 (128,116,116,1)
的数组,其中第一个维度是受试者的数量,第二个和第三个维度是数据。
我试图计算每个位置的方差(与平均值的平方偏差)(即:在 (0,0)、(0,1)、(1,0) 等...直到 ( 116,116)) 对于所有 128 个受试者,得到一个形状为 (116,116)
.
的数组
谁能告诉我如何实现这个?
谢谢!
假设我们有一个多维列表 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 个主题的方差(这将是轴 0
),我看不出有什么方法可以使用statistics
包,因为它不将多列表作为输入。所以你必须自己写 code/logic 并在主题上添加循环。
但是,使用 numpy.var
函数,我们可以轻松计算所有 128 个受试者中每个 'datapoint'(指数元组)的方差。
旁注: 你提到了 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)
我有一个形状为 (128,116,116,1)
的数组,其中第一个维度是受试者的数量,第二个和第三个维度是数据。
我试图计算每个位置的方差(与平均值的平方偏差)(即:在 (0,0)、(0,1)、(1,0) 等...直到 ( 116,116)) 对于所有 128 个受试者,得到一个形状为 (116,116)
.
谁能告诉我如何实现这个?
谢谢!
假设我们有一个多维列表 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 个主题的方差(这将是轴 0
),我看不出有什么方法可以使用statistics
包,因为它不将多列表作为输入。所以你必须自己写 code/logic 并在主题上添加循环。
但是,使用 numpy.var
函数,我们可以轻松计算所有 128 个受试者中每个 'datapoint'(指数元组)的方差。
旁注: 你提到了 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)