numpy中多个矩阵的计算方法

2024-03-29 12:11:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我的应用程序在python2.6中使用numpy和sciepy。在

我的问题是:
如何才能最有效地创建包含所有相同矩阵中每个单元格平均值的摘要矩阵?

摘要矩阵与所有其他矩阵的结构相同,只是摘要矩阵中每个单元格中的值是存储在所有其他矩阵中相同单元格中的值的平均值。如果一个矩阵不包含上一个测试条件的数据,那么我要确保在求平均值时,它的内容不会被视为零。换句话说,我想要所有非零值的平均值。在

有人能给我展示一种简洁、灵活的组织代码的方法吗?这样它就可以用尽可能少的代码完成我想做的所有事情,并且在以后我想在其他数据结构中重复使用它时保持尽可能灵活?

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

我尝试过用多种不同的方式编写这些代码,但是如果我以后想将这些代码用于其他数据结构,它们似乎都是代码密集型且不灵活的。在


Tags: 文件csv数据方法代码numpy应用程序数据结构
1条回答
网友
1楼 · 发布于 2024-03-29 12:11:27

您可以使用masked arrays。假设N是csv文件的数量。您可以将所有数据存储在一个蒙版数组a中,其形状为(N,11,6)。在

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

然后,考虑到屏蔽值,沿第一轴的平均值如下所示:

^{pr2}$

相关问题 更多 >