在二维numpy数组中沿x和y查找标准偏差

时间:2018-08-20 17:02:12

标签: python arrays python-3.x numpy standard-deviation

如果我有一个由点(x,y)组成的二维numpy数组,并且在每个点上给出一些值z(x,y),我可以找到沿x轴和y轴的标准偏差吗?我知道np.std(data)只会找到整个数据集的标准偏差,但这不是我想要的。另外,添加axis=0axis=1会计算出您拥有的所有行或列沿每个轴的标准偏差。如果我只想沿y轴一个标准偏差,而沿x轴另一个标准偏差,可以在这样的数据集中找到它们吗?据我了解,当点x的值为y(x)时,沿着x和y的标准偏差通常是有意义的。但是我需要一些sigma_xsigma_y来进行2D高斯拟合。这可能吗?

由于我的实际数据要大得多,这是一个过于简化的示例。

import numpy as np
data = np.array([[1, 5, 0, 3], [3, 5, 1, 1], [41, 33, 9, 20], [11, 20, 4, 13]])

print(np.std(data)) #not what I want
>>> 11.78386 

print(np.std(data, axis=0)) #this gives me as many results as there are rows/columns so it's not what I want
>>> [16.03 11.69 3.5 7.69]

我不确定对应于我想要的输出的样子,因为我什至不确定在形状> nx2的2D数组中是否可行。但是我想知道是否有可能沿x轴计算标准偏差,而沿y轴计算标准偏差。我什至不确定这对于2D数组是否有意义...但是,如果没有,我不确定要输入2 sigma_xsigma_y以进行2D高斯拟合

1 个答案:

答案 0 :(得分:0)

标准偏差与y = f(x)(x, y)是坐标无关。它只是衡量一组值的分布程度。如果您有n个点(x, y),它们组成一个nX2大小的数组,那么std(axis=0)是您想要的。它创建一个(2, )形状的数组,其中第一个元素是x轴std,第二个元素是y轴std。这是否有用,取决于您想要什么,并且忽略xy之间的相关性。