2017-05-08 6 views
-1

にastropyと列の範囲を抽出するためのforループI次のファイルがあります使ってPython

rowname1  0.0019  0.0142  -0.0258  -0.0058  -0.0097  
rowname2  0.0001  0.0168  -0.0268  -0.0063  -0.0072 

を、私はx番目する(すなわちrownames列を避ける)2から列を抽出したいです。これまで私はastropyモジュールascii.read関数を使用しています。例:セットは、x = 3:

from astropy.io import ascii 
x = 3 
evec = ascii.read('file', include_names=['col'[i] for i in xrange(2,x)]) 
print evec 

それだけで

<No columns> 

がどのようにループのために正しく動作するためにする必要があります返しますか?

ありがとうございました!

+0

astropyは、ASCIIファイルからテーブルを読み込むための列名を期待しているようです。 Cf:http://docs.astropy.org/en/stable/io/ascii/ –

+0

実行した場合:from astropy.io import ascii evec = ascii.read( 'file'、include_names = ['col2'、 ' col3 ']) print evecあなたは2つの最初の列を得ます – Jaime

+0

ああ、そうです。問題は、あなたが実際に連結したい間に 'col' [i]で 'col'の2番目の文字を選択していることです。 –

答えて

1

あなたはinclude_namesにバグがあります。つまり、 'col'の2番目の文字を選択し、数字を文字列に連結しません。

だけでそれを置き換える:

evec = ascii.read('file', include_names = ['col' + str(i) for i in xrange(2,x)]) 

はまたはxrangeの2番目のパラメータが含まれていないことを考えます。あなたの例に3を含める場合は、xrange(2、x + 1)を使用してください。

関連する問題