使用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]]
我基本上希望每条信息都是一个单独的元素,然后我可以操作。
答案 0 :(得分:1)
genfromtxt
返回的内容称为结构化数组。它提供 1d元组数组,每个元组都有你指定的dtype
。
一旦您学会了如何使用它们,这些实际上非常有用。你不能拥有一个带有浮点数和字符串的二维数组,但是你可以使用结构化数组!
例如:
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
。您可以使用字段名称将列作为1d数组:
>>> y['mystring']
array(['string001', 'string002', 'string002'],
dtype='|S20')
>>> y['myfloat']
array([ 123., 456., 789.])
请注意,由于y['myfloat']
参数,float
会提供dtype
,即使文件中的int
为{。}}。
或者,您可以使用整数来获取具有给定tuple
的{{1}}行:
dtype
如果您正在对此类数据结构进行大量操作,您可能需要查看pandas