ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Numpy数据类型

2021-12-15 13:03:49  阅读:172  来源: 互联网

标签:Python dtype 数据类型 np array Numpy Out


Python的易用之处在于动态输入,每个变量的数据类型是动态推断的,而C语言的是被明确地声明。

Python的数据类型其实是一个Python对象,每一个Python对象都是一个聪明的伪C语言结构体,该结构体不仅包含值,也包含其它信息。在定义一个Python对象时,其实是定义一个指针,指向包含这个Python对象的所有信息的某个内存位置,由于Python对象的整个数据类型结构体里面还包含大量额外的信息,相对C语言来说这些信息会增加额外的负担。

Numpy的数组与Python列表差异:

  • Python列表每一个元素都是完整的结构体,包含数据和类型信息;比较灵活,可用任意类型填充。
  • Numpy数组是固定类型的,要求数组内必须包含同一类型的数据,如果类型不匹配,Numpy将会向上转换(如果可行),如整型可以转换成浮点型;缺乏灵活性,但是可更有效存储和操作数据。

Numpy基本数据类型表

名称 描述
bool_ 布尔型数据类型(True 或者 False)
int_ 默认的整数类型(类似于 C 语言中的 long,一般是int 32 或 int64)
intc 与 C 的 int 类型一样,一般是 int32 或 int 64
intp 用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
int8 字节(-128 to 127)
int16 整数(-32768 to 32767)
int32 整数(-2147483648 to 2147483647)
int64 整数(-9223372036854775808 to 9223372036854775807)
uint8 无符号整数(0 to 255)
uint16 无符号整数(0 to 65535)
uint32 无符号整数(0 to 4294967295)
uint64 无符号整数(0 to 18446744073709551615)
float_ float64 类型的简写
float16 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
float32 单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
float64 双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
complex_ complex128 类型的简写,即 128 位复数
complex64 复数,表示双 32 位浮点数(实数部分和虚数部分)
complex128 复数,表示双 64 位浮点数(实数部分和虚数部分)
#获取数组数据类型
In [11]: arr = np.array([1,2,3,4])
In [12]: arr.dtype
Out[12]: dtype('int32')

#转换数组数据类型
In [13]: float_arr = arr.astype(np.float64)
In [14]: float_arr.dtype
Out[14]: dtype('float64')

#转换数组与另一个数组一样的数据类型
In [15]: arr2 = np.array([2.22,3.33,-1.2])
In [17]: float_arr2 = arr.astype(arr2.dtype)
In [18]: float_arr2
Out[18]: array([1., 2., 3., 4.])
In [19]: float_arr2.dtype
Out[19]: dtype('float64')

#创建结构化数据类型
In [2]: a = np.array([1,2,3],dtype = complex)
In [3]: a
Out[3]: array([1.+0.j, 2.+0.j, 3.+0.j])

In [4]: dt = np.dtype([('age',np.int8)])
In [5]: dt
Out[5]: dtype([('age', 'i1')])

In [6]: a = np.array([(10,),(20,),(30,)],dtype = dt)
In [7]: a
Out[7]: array([(10,), (20,), (30,)], dtype=[('age', 'i1')])

In [8]: a['age']
Out[8]: array([10, 20, 30], dtype=int8)

标签:Python,dtype,数据类型,np,array,Numpy,Out
来源: https://www.cnblogs.com/xiqi2018/p/15692021.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有