【发布时间】:2013-11-28 02:55:03
【问题描述】:
我有一个值数组 x:
x=numpy.array([[-0.11361818 -0.113618185 -0.98787775 -0.09719566],
[-0.11361818 -0.04173076 -0.98787775 -0.09719566],
[-0.11361818 -0.04173076 -0.98787775 -0.09719566],
[-0.62610493 -0.71682393 -0.24673653 -0.18242028],
[-0.62584854 -0.71613061 -0.24904998 -0.18287883],
[-0.62538661 -0.71551038 -0.25160676 -0.18338629]])
以及对应的类标签y数组:
y=numpy.array([1, 1, 2, 3, 4, 4])
y 中的第一个类标签 1 属于数组 x 的第一行,y 中的第二个类标签 1 属于数组 x 的第二行,依此类推。
现在我想计算每个班级 1-4 的平均值。比如 x 中的第 1 行和第 2 行都属于第 1 类,所以我计算第 1 行和第 2 行的平均值。
我有以下代码:
means = numpy.array([x[y == i].mean(axis=0) for i in xrange(4)])
当我这样做时,我会得到这样的结果:
array([[ nan],
[-1.27636606],
[-1.24042235],
[-1.77208567]])
如果我采用 xrange(6),我会得到这样的结果:
array([[ nan],
[-1.27636606],
[-1.24042235],
[-1.77208567],
[-1.774899 ],
[ nan]])
为什么会这样?如何摆脱 nans 并最终得到我的 4 个平均值?
我有来自 here 的代码,他们将类的数量作为 xrange() 的参数,我不太明白我做了什么不同的事情。
提前感谢您的帮助!
【问题讨论】: