使用numpy计算均值?

4

我有一个二维数组,长这样:

array = [[23 ,89, 4, 3, 0],[12, 73 ,3, 5,1],[7, 9 ,12, 11 ,0]]

最后一列对于所有行始终为0或1。我的目的是计算第0列的两个均值,其中一个均值是最后一列的值为0时,另一个均值是最后一列的值为1时。

例如:对于上面给出的样本数组:

均值1:15(所有行中最后一列的值为0时第0列的平均值)

均值2:12(所有行中最后一列的值为1时第0列的平均值)

我尝试了以下代码(其中train是我的输入数组名称):

 mean_c1_0=np.mean(train[:: , 0])
 variance_c1_0=np.var(train[:: , 0])

这会让我得到第0列所有值的均值和方差。

我可以引入一个更多的循环和几个 if 条件来不断检查最后一列,只有在添加了第 0 列对应的值之后才继续。但是我正在寻找一种高效的方法。由于我是 Python 的新手,所以我希望是否有一种能够完成此任务的 numpy 函数。

您能指向任何这样的文档吗?

2个回答

7
你可以使用numpy的数组过滤功能(参见如何通过第i个字段的值切片numpy数组?),然后以此方式获取平均值。不需要循环。
import numpy
x = numpy.array([[23, 89, 4, 3, 0],[12, 73, 3, 5, 1],[7, 9, 12, 11, 0]])
numpy.mean(x[x[:,-1]==1][::,0])
numpy.mean(x[x[:,-1]==0][::,0])

这太美了!谢谢。 - R_Moose

1
你可以尝试这个。

mean_of_zeros = np.mean(numpy_array[np.where(numpy_array[:,-1] == 0)])

mean_of_ones = np.mean(numpy_array[np.where(numpy_array[:,-1] == 1)])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接