この場合、十分な情報が提供されていないため、問題の原因を特定するのは困難です。ここに投稿した内容を考えると、コードは機能するはずです。
>>> with open('beamtest.out', 'r') as f:
... f.readlines()
...
['header 0\n', 'header 1\n', 'header 2\n', 'header 3\n', 'header 4\n',
'header 5\n', 'header 6\n', 'header 7\n', 'header 8\n', 'header 9\n',
'header 10\n', 'header 11\n', 'header 12\n', 'header 13\n',
'3 0 36373.7641026\n', '3 1 36373.7641026\n', '3 2 36373.7641026']
>>> chunk, power = numpy.loadtxt('beamtest.out', skiprows=14,
usecols=(1,2), unpack=True)
>>> chunk
array([ 0., 1., 2.])
>>> power
array([ 36373.7641026, 36373.7641026, 36373.7641026])
もちろん、kindallusecols
の答えが示すように、単一の整数を受け入れないため、2 番目の例は失敗します。シーケンスが必要です。((1)
は1
括弧で囲まれています。タプルを作成するには、そこにコンマが必要です -- (1,)
。)
dtype
複数の列のフォーマットを指定するために使用する方法の例を次に示します。
>>> record = numpy.loadtxt('beamtest.out', skiprows=14, usecols=(1, 2),
dtype={'names':('chunk', 'power'),
'formats':('i8', 'f8')})
>>> record
array([(0, 36373.7641026), (1, 36373.7641026), (2, 36373.7641026)],
dtype=[('chunk', '<i8'), ('power', '<f8')])
>>> record['chunk']
array([0, 1, 2])
>>> record['power']
array([ 36373.7641026, 36373.7641026, 36373.7641026])