我有一个格式化的字符串,看起来像
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)
这是最好的方式吗?
答案 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')])