[英]dtype argument in numpy.genfromtxt
>>> 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"
代表什么。 我可以確定出我是整數, f是浮點數, s是字符串,但是i8中的8是什么? 我首先了解它的字節數,但是s5怎么可能。 我了解dtype有助於指定數據類型,以便我們可以從CSV文件中讀取數據,但有人可以對數據類型提供一些見解
i8
或f8
的8是字節數。 有幾種不同的方法可以在numpy中表示相同的數據類型 。 您從np.genfromtxt
中看到的字符串為緊湊格式。 前面的<
或>
符號表示小端或大端(參見文檔 ),后跟i
表示整數, f
表示浮點/雙精度,以及字節數。
較長的數據類型名稱的大小以位為單位 , 而不是以字節為單位 ,這意味着i8
為int64
, f4
為float32
,依此類推。 例如:
>>> np.dtype('i8')
dtype('int64')
>>> np.dtype('f4')
dtype('float32')
默認情況下,這些都是little endian。 據我所知,如果要大字節序, np.dtype
不會返回長格式:
>>> np.dtype('>c16')
dtype('>c16')
字符串是一種特殊的數據類型,數字表示最大字符串字符數。 有關更多詳細信息,請參見此問題 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.