【问题标题】:Using numpy to calculate mean?使用 numpy 计算平均值?
【发布时间】:2019-02-06 13:33:08
【问题描述】:

我有一个如下所示的二维数组:

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 列所有值的均值和方差。

我总是可以再引入一个 for 循环和几个 if 条件来继续检查最后一列,然后才在第 0 列中添加相应的值,但我正在寻找一种有效的方法。由于我是 Python 新手,我希望是否有一个 numpy 函数可以完成这项工作。

你能给我指出任何这样的文件吗?

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    您可以使用 numpy 的数组过滤。 (请参阅How can I slice a numpy array by the value of the ith field?),然后以这种方式获得平均值。不需要循环。

    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])
    

    【讨论】:

    • 这太漂亮了!谢谢。
    【解决方案2】:

    你可以试试这个。

    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)])
    

    【讨论】:

      猜你喜欢
      • 2013-11-24
      • 2020-06-11
      • 1970-01-01
      • 2014-11-04
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多