numpy.genfromtxt 中的 dtype 参数


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

我的问题与dtype论点有关。我无法理解dtype="i8,f8,|S5"代表什么。我可以辨认出 i 是一个整数,f 是浮点数,s 是字符串,但 i8 中的 8 是什么?我首先理解了字节,但是s5怎么可能。我知道dtype有助于指定数据类型,以便我们可以从CSV文件中读取,但是有人可以对数据类型提供一些见解吗

i8f8 中的 8 是字节数。有几种不同的方法可以在 numpy 中表达相同的数据类型。您从np.genfromtxt中看到的字符串采用紧凑格式。前面的 <> 符号表示小端或大端(请参阅文档(,后跟整数的 if 表示浮点/双精度,以及字节数。

较长的数据类型名称的大小以位而不是字节为单位,这意味着i8int64f4float32等等。 例如:

>>> np.dtype('i8')
dtype('int64')
>>> np.dtype('f4')
dtype('float32')

默认情况下,这些都是小端序。如果你想要大端序,据我所知,np.dtype不返回长格式:

>>> np.dtype('>c16')
dtype('>c16') 

字符串是一种特殊的数据类型,数字表示字符串字符的最大数量。有关更多详细信息,请参阅此问题。

相关内容

  • 没有找到相关文章

最新更新