我有以下问题。知道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()
我如何让这个工作?
答案 0 :(得分:0)
请记住,在Python中,[]
生成的对象通常称为list
,而不是array
。因此,考虑到这一点,我假设您真正的问题是“我如何将4个独立的python list
转换为2维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]])
然后,您可以像使用array
生成的genfromtxt
一样使用布尔索引:
>>> a = numpy.array(zip(x, y, ov, aa))
>>> a[a == 1]
array([ 1, 5, 9, 13, 3, 7, 11, 15])
您可能正在寻找将x
,y
,ov
和aa
合并到数组中的其他方法。在这种情况下,您将不得不指定列表中的内容和所需输出的形状。