2

Python では、genfromtxt(numpy から) を使用してテキスト ファイルを配列に読み込みます。

y = np.genfromtxt("1400list.txt", dtype=[('mystring','S20'),('myfloat','float')])

私の2列を2D配列に読み取っていないように見えることを除いて、これはうまくいきます。私は得ています:

[('string001', 123.0),('string002', 456.0),('string002', 789.0)]

しかし、私は欲しいと思います

[['string001', 123.0],['string002', 456.0],['string002', 789.0]]

私は基本的に、各情報を個別の要素として扱い、それを操作できるようにしたいと考えています。

4

1 に答える 1

1

genfromtxt返されるものは構造化配列と呼ばれます。タプルの1 次元配列を提供し、各タプルにはdtype指定した があります。

これらは実際に使い方を学ぶと非常に便利です。浮動小数点数と文字列を含む 2 次元配列を使用することはできませんが、構造化配列を使用すると可能です!

例えば:

import numpy as np
from StringIO import StringIO
s = """string001 123
       string002 456
       string002 789"""
f = StringIO(s)
y = np.genfromtxt(f, dtype=[('mystring', 'S20'), ('myfloat', float)])

それはあなたがこれまで持っているものです。これで、次の方法でアクセスできますyフィールド名を使用して、列を 1 次元配列として取得できます。

>>> y['mystring']
array(['string001', 'string002', 'string002'], 
  dtype='|S20')

>>> y['myfloat']
array([ 123.,  456.,  789.])

ファイル内では s であっても、引数のために sをy['myfloat']与えることに注意してください。floatdtypeint

または、整数を使用しtupleて、指定された で行を取得できdtypeます。

>>> y[1]
('string002', 456.0)

このようなデータ構造の操作を頻繁に行っている場合は、pandasを調べることをお勧めします。

于 2013-03-15T16:57:17.340 に答える