使用 Python,我使用 genfromtxt
(来自 numpy)将文本文件读入数组:
y = np.genfromtxt("1400list.txt", dtype=[('mystring','S20'),('myfloat','float')])
它工作正常,除了它似乎没有将我的 2 列读入二维数组。我得到:
[('string001', 123.0),('string002', 456.0),('string002', 789.0)]
但我认为会喜欢:
[['string001', 123.0],['string002', 456.0],['string002', 789.0]]
我基本上希望将每条信息作为一个单独的元素,然后我可以对其进行操作。
genfromtxt
返回的内容称为结构化数组。它给出了一个一维元组数组,每个元组都有您指定的dtype
。
一旦您学会了如何使用它们,这些实际上非常有用。您不能拥有包含 float 和字符串的二维数组,但可以使用结构化数组!
例如:
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
。您可以使用字段名称 将一列作为一维数组:
>>> y['mystring']
array(['string001', 'string002', 'string002'],
dtype='|S20')
>>> y['myfloat']
array([ 123., 456., 789.])
请注意,由于 dtype
参数,y['myfloat']
给出了 float
,即使在文件中它们是 int
s.
或者,您可以使用整数来获取具有给定 dtype
的行作为 tuple
:
>>> y[1]
('string002', 456.0)
如果您要像这样对数据结构进行大量操作,您可能需要查看 pandas
我是一名优秀的程序员,十分优秀!