繁体   English   中英

计算多个矩阵的均值

[英]calculating means of many matrices in numpy

我有许多csv文件,每个文件都包含大致相同的矩阵。 每个矩阵是11列,每行5或6行。 列是变量,行是测试条件。 有些矩阵不包含最后一个测试条件的数据,这就是为什么某些矩阵有5行,而其他矩阵有6行的原因。

我的应用程序在python 2.6中使用numpy和sciepy。

我的问题是:
如何最有效地创建一个汇总矩阵,其中包含所有相同矩阵中每个像元的均值?

摘要矩阵将具有与所有其他矩阵相同的结构,不同之处在于摘要矩阵中每个单元格中的值将是所有其他矩阵中存储在同一单元格中的值的平均值。 如果一个矩阵不包含最后一个测试条件的数据,那么我要确保在完成平均后,其内容不被视为零。 换句话说,我想要所有非零值的均值。

任何人都可以向我展示一种简短,灵活的组织此代码的方式,以便用最少的代码即可完成我想做的所有事情,并且在我以后要与其他数据结构重用的情况下,也可以保持尽可能灵活的方式吗?

我知道如何拉入所有csv文件以及如何写入输出。 我只是不知道在脚本中构造数据流的最有效方法,包括是使用python数组还是numpy数组,以及如何构造操作等。

我曾尝试以多种不同的方式对此进行编码,但是如果以后我想将此代码用于其他数据结构,它们似乎都是相当密集的代码,而且不够灵活。

您可以使用掩码数组 说N是csv文件的数量。 您可以将所有数据存储在形状为(N,11,6)的蒙版数组A中。

from numpy import *
A = ma.zeros((N,11,6))
A.mask = zeros_like(A) # fills the mask with zeros: nothing is masked
A.mask = (A.data == 0) # another way of masking: mask all data equal to zero
A.mask[0,0,0] = True # mask a value
A[1,2,3] = 12. # fill a value: like an usual array

然后,沿着第一个轴的平均值,并考虑到屏蔽的值,由下式给出:

mean(A, axis=0) # the returned shape is (11,6)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM