簡體   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