将字符串加载到numpy记录数组中

时间:2014-03-17 14:55:21

标签: python arrays numpy

我有一个格式化的字符串,看起来像

contents = "1,2,3;\n4,5,6;"

我要将numpy

加载到dtype记录数组中
structure = {'names': ['foo', 'bar', 'baz'], 'formats': ['i4']*3}

创建类似

的内容
array([(1,2,3),
       (4,5,6)],
      dtype = [('foo', '<i4'), ('bar', '<i4'), ('baz', '<i4')])

numpy.fromstring仅支持1D数组,我不能使用numpy.loadtxt,因为它不是文件。

numpy.loadtxt的文档似乎建议我可以使用生成器,所以我使用this answer中详述的split生成器来创建生成器并完成了

np.loadtxt(itersplit(contents, sep=";"), delimiter=",", dtype=structure)

这是最好的方式吗?

1 个答案:

答案 0 :(得分:2)

您可以使用StringIO.StringIO

>>> from StringIO import StringIO
>>> c = StringIO(contents.replace(';', ''))
>>> np.loadtxt(c, delimiter=",", dtype=structure)
array([(1, 2, 3), (4, 5, 6)], 
      dtype=[('foo', '<i4'), ('bar', '<i4'), ('baz', '<i4')])