np.genfromtxt和StringIO中的dtype参数

时间:2019-01-31 00:30:42

标签: python-3.x numpy

scipy页面上的

numpy.genfromtxt显示以下代码。我无法理解以下代码,特别是dtype和读取字符串部分,因此也无法理解代码。以下是代码。

from io import StringIO
import numpy as np
s=StringIO(u"1,1.3,abced")
data=np.genfromtxt(s, dtype=[('myint', 'i8'),('myfloat','f8'), ('mystring','S5')], delimiter=",")

好的。在这里,我得到从s=StringIO(u"1,1.3,abced")中读取的1,1.3和abced。但是u的作用是什么?

此外,我得到i8是8字节的整数。但是'myint','myfloat'和'mystring'是做什么的呢?

1 个答案:

答案 0 :(得分:0)

'u'表示'unicode',这是Py3中的默认字符串类型,因此此处不需要。同样也不需要StringIO。我只给genfromtxt一个字符串列表:

In [221]: txt = ["1,1.3,abced"]

In [223]: np.genfromtxt(txt, 
  dtype=[('myint', 'i8'),('myfloat','f8'), ('mystring','S5')], 
  delimiter=",")
Out[223]: 
array((1, 1.3, b'abced'),
     dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', 'S5')])

dtype定义了一个复合dtype,一个具有3个字段,每列一个。您可以按名称访问字段:

data['myint']
data['myfloat']