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 では、 によって生成されるオブジェクト[]は一般にlistではなくと呼ばれることに注意してくださいarray。それを念頭に置いて、あなたの本当の質問は「4つlistの独立したpythonを2次元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]])

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 に答える