簡體   English   中英

結合numpy數組和遮罩

[英]combining numpy arrays and masking

我有以下問題。 知道使用numpy我可以使用genfromtext讀取數據文件。 然后,我可以使用掩碼(從字典中)從中選擇記錄。

>>> gln = a[a['AA2'] == 'GLN']
>>> gln['mean'].mean()
62.805000305175781

我該如何使用陣列的組合而不是從磁盤讀取陣列?

x=[]
y=[]
ov=[]
aa=[]

a = numpy.array(x,y,ov,aa)         <== does not actually work
gln = a[a[3] == 'GLN']
gln['mean'].mean()

我該如何工作?

請記住,在Python中, []產生的對象通常稱為list ,而不是array 因此,考慮到這一點,我假設您真正的問題是“如何將4個獨立的python list轉換為二維numpy數組?”

答案取決於您希望list在數組中的布局方式。 假設每個列表代表一行,則可以執行以下操作:

>>> x = range(0, 4)
>>> y = range(4, 8)
>>> ov = range(8, 12)
>>> aa = range(12, 16)
>>> numpy.array([x, y, ov, aa])
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])

或者,如果每個列表代表一列,則可以執行以下操作:

>>> numpy.array(zip(x, y, ov, aa))
array([[ 0,  4,  8, 12],
       [ 1,  5,  9, 13],
       [ 2,  6, 10, 14],
       [ 3,  7, 11, 15]])

然后,可以像對genfromtxt產生的array一樣使用布爾索引:

>>> a = numpy.array(zip(x, y, ov, aa))
>>> a[a == 1]
array([ 1,  5,  9, 13,  3,  7, 11, 15])

可能是您正在尋找將xyovaa到數組中的其他方法。 在這種情況下,您將必須指定列表中的內容以及所需輸出的形狀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM