【问题标题】:Find average of all columns of matrix filtered on last column查找在最后一列过滤的矩阵的所有列的平均值
【发布时间】:2015-10-10 00:58:06
【问题描述】:

我是 numpy 的新手。我有一个 Nx4 矩阵,例如,当最后一列等于 1 时,我想找到每列的平均值。在 matlab 中,我会做类似mean1 = mean(data[column 4] == 1) 的事情。这将返回一个具有列平均值的矩阵(或向量),第 4 列的平均值等于 1。我找不到任何具体的文档来指定如何处理这个问题。 This 展示了如何过滤矩阵,但我不应该将矩阵重新分配给新变量,从而使存储大小加倍。提前致谢。

【问题讨论】:

    标签: python numpy matrix


    【解决方案1】:
    #make artificial data to match problem
    data = np.random.random((100,4))
    print( id(data) )
    data[:,3] = data[:,3] < 0.5
    print( id(data) )  #same object (memory location)
    #get the filter
    dfilter = data[:,3].astype(np.bool_)
    #find the means
    means = data[dfilter].mean(axis=0)
    

    【讨论】:

    • 谢谢。我做到了:dfilter = data[:, 3] = data[:, 3] == 1mean1 = data[dfilter].mean(0)
    • 我需要人工数据来说明。你可以做data[data[:,3]==1].mean(0)
    • 变量方法最适合这种情况。我正在做一个机器学习练习,所以我必须使用过滤器来获得更多的平均值。只是出于好奇,这是否会在后端构建一个指针矩阵,还是创建一个全新的矩阵副本?
    • 如果你的意思是步骤data[:,3] = data[:,3] &lt; 0.5,这不会建立一个新的矩阵。我将编辑上面的代码以澄清这一点。
    猜你喜欢
    • 2018-09-23
    • 2016-11-02
    • 1970-01-01
    • 2014-05-16
    • 2021-01-13
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多