1

我有以下问题。知道使用 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()

我怎样才能让它工作?

4

1 回答 1

0

请记住,在 Python 中,由 生成的对象[]通常称为 a list,而不是array。因此,考虑到这一点,我假设您真正的问题是“如何将 4 个独立list的 python 转换为二维numpy数组?”

答案取决于您希望如何list在数组中布置 s。假设每个列表代表一行,您可以这样做:

>>> 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]])

然后,您可以像使用 producer 一样使用布尔array索引genfromtxt

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

您可能正在寻找将xyov和组合aa成数组的其他方式。在这种情况下,您将不得不指定列表中的内容以及所需输出的形状。

于 2012-07-12T19:04:34.577 回答