当前位置: 首页 > 后端技术 > Python

NumPy:数据类型对象介绍dtype

时间:2023-03-26 17:16:33 Python

前面说过,NumPy中有多种数据类型,每种数据类型都是一个dtype(numpy.dtype)对象。今天我们将详细解释dtype对象。对于dtype的定义,先看dtype方法的定义:classnumpy.dtype(obj,align=False,copy=False)它的作用是将对象obj转为dtype类型的对象。它有两个可选参数:align——是否按照C编译器的结构输出格式对齐对象。Copy-是否复制对象,或对象的引用。dtype可以用来描述数据的类型(int、float、Python对象等),描述数据的大小、数据的字节顺序(littleendianorbigendian)等。可以转换的对象到dtype可以转换的obj对象有很多种类型。让我们一一解释dtype对象。如果obj对象本身是dtype对象,可以无缝转换。如果不传None,则默认为float_,这也是我们默认创建float类型数组的原因。数组标量类型内置数组标量可以转换为关联数据类型的对象。在上一篇文章中,我们谈到了什么是数组标量类型。数组标量类型是可以通过np.type访问的数据类型。例如:np.int32、np.complex128等我们再来看数组标量的转换:In[85]:np.dtype(np.int32)Out[85]:dtype('int32')In[86]:np.dtype(np.complex128)Out[86]:dtype('complex128')这些以np开头的内置数组标量类型可以参考我之前的文章《NumPy:数据类型》。请注意,数组标量不是dtype对象,尽管在许多情况下,只要需要dtype对象,就可以使用数组标量。泛型类型一些泛型类型的对象可以转换为对应的dtype类型:generictypeobjectdtypetypesnumber,inexact,floatingfloatcomplexfloatingcfloatinginteger,signedintegerint_unsignedintegeruintcharacterstringgeneric,flexiblevoidPython内置类型一些Python内置类型和数组标量类型是等价的,也可以是转换为dtype:Python类型dtypetypeintint_boolbool_floatfloat_complexcfloatbytesbytes_strstr_buffervoid(allothers)object_参见内置Python类型转换的例子:In[82]:np.dtype(float)Out[82]:dtype('float64')In[83]]:np.dtype(int)Out[83]:dtype('int64')In[84]:np.dtype(object)Out[84]:dtype('O')objectwith.dtypeattributeAnytypeobjectAs只要包含dtype属性,并且这个属性属于可以转换的范围,就可以转换为dtype。一个字符串对象对于每一种内置的数据类型都有对应的字符编码,我们也可以使用这些字符编码进行转换:In[134]:np.dtype('b')#byte,nativebyteorderOut[134]:dtype('int8')In[135]:np.dtype('>H')#big-endianunsignedshortOut[135]:dtype('>u2')In[136]:np.dtype('bigendian。第二部分是数组中元素的基本类型:类型说明t位域(后面的整数给出位域的位数)bBoolean(整数类型,其中所有值都只有True或False)iIntegeru无符号整数f浮点数c复数浮点数pointmTimedeltaMDatetimeOObject(即内存包含指向PyObject的指针)SString(char的定长序列)UUnicode(Py_UNICODE的定长序列)VOther(void*-每个项目都是一个固定大小的内存块)最后一部分是数据的长度。dtype支持以下类型的转换:类型描述'?'boolean'b'(signed)byte'B'unsignedbyte'i'(signed)integer'u'unsignedinteger'f'floating-point'c'complex-floatingpoint'm'timedelta'M'datetime'O'(Python)objects'S','a'零终止字节(不推荐)'U'Unicodestring'V'原始数据(void)我们来看几个例子:在[137]:np.dtype('d')Out[137]:dtype('float64')在[138]:np.dtype('i4')Out[138]:dtype('int32')In[139]]:np.dtype('f8')Out[139]:dtype('float64')In[140]:np.dtype('c16')Out[140]:dtype('complex128')In[141]:np.dtype('a25')Out[141]:dtype('S25')In[142]:np.dtype('U25')Out[142]:dtype('i4'),('little','i4'),('little','

最新推荐
猜你喜欢