NumPy数组对象
NumPy中的多为数组称为ndarray,它有两部分组成
- 数据本身
- 描述数据的元数据
NumPy数组优势
- 查看数组的数据类型
In [2]: a = np.arange(5)
In [3]: a.dtype
Out[3]: dtype('int64')
- 查看数据的元素个数
In [4]: a
Out[4]: array([0, 1, 2, 3, 4])
In [5]: a.shape
Out[5]: (5,)
创建多维数组
- 创建多维数组
In [6]: m = np.array([np.arange(2),np.arange(2)])
In [7]: m
Out[7]:
array([[0, 1],
[0, 1]])
- 显示该数组的形状
In [8]: m.shape
Out[8]: (2, 2)
选择Numpy数组元素
In [9]: a = np.array([[1,2],[3,4]])
In [10]: a
Out[10]:
array([[1, 2],
[3, 4]])
In [11]: a[0,0]
Out[11]: 1
In [12]: a[0,1]
Out[12]: 2
In [13]: a[1,0]
Out[13]: 3
In [14]: a[1,1]
Out[14]: 4
数组元素的下标如下所示
[0,0] | [0,1] | ||
[1,0] | [1,1] | ||
NumPy的数值类型
类型 | 说明 |
---|---|
bool | 布尔值(值为True或False) |
inti | 长度取决于平台的整数(通常为int)32或者int64) |
int8 | 字节类型(取值范围-128~127) |
int16 | 整型(取值范围-32768~32767) |
int32 | 整型(取值范围-231~231-1) |
int64 | 整型(取值范围-263~263-1) |
uint8 | 无符号整型(取值范围0~255) |
uint16 | 无符号整型(取值范围0~65535) |
uint32 | 无符号整型(取值范围0~232-1) |
uint64 | 无符号整型(取值范围0~264-1) |
float16 | 半精度浮点型:符号占用1比特,指数占用5比特,尾数占用10比特 |
float32 | 单精度浮点型:符号占用1比特,指数占用8比特,尾数占用23比特 |
float64或float | 双精度浮点型:符号占用1比特,指数占用11比特,尾数占用52比特 |
complex64 | 复数整型,由两个32位浮点数表示 |
complex128或complex | 复数整型,由两个64位浮点数表示 |
- 每一种数据类型都有相应的转换函数:
In [27]: np.float64(42) Out[27]: 42.0 In [28]: np.int8(42.0) Out[28]: 42 In [29]: np.bool(42) Out[29]: True In [31]: np.bool(0) Out[31]: False In [32]: np.bool(42.0) Out[32]: True In [33]: np.float(True) Out[33]: 1.0 In [34]: np.float(False) Out[34]: 0.0
- 许多函数都带有一个指定数据类型的可选参数
不允许把复数类型转化为整型,同样的也不允许把复数转化为浮点数In [36]: np.arange(7, dtype=np.uint16) Out[36]: array([0, 1, 2, 3, 4, 5, 6], dtype=uint16)
字符码
-
*字符码是为了与其前身Numeric向后兼容
整型 字符码 整型 i 无符号整型 u 单精度浮点型 f 双精度浮点型 d 布尔值 b 复数型 D 字符串 S 万国码(Unicode) U 空类型(void) V -
生成单精度浮点型
In [37]: np.arange(7, dtype='f') Out[37]: array([ 0., 1., 2., 3., 4., 5., 6.], dtype=float32)
-
创建负数类型的数组
In [38]: np.arange(7, dtype='D') Out[38]: array([ 0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j, 4.+0.j, 5.+0.j, 6.+0.j])
dtype构造函数
- 使用python自带的常规浮点型
In [40]: np.dtype(float) Out[40]: dtype('float64')
- 用字符码规定单精度浮点数
In [41]: np.dtype('f') Out[41]: dtype('float32')
- 用字符码规定双精度浮点数
In [42]: np.dtype('d') Out[42]: dtype('float64')
- 可以向dtype构造函数传递一个双字码。其中,第一个字符表示数据类型,第二个字符为数字,表示占用的字节数
In [43]: np.dtype('f8') Out[43]: dtype('float64')
可以通过sctypeDict.keys()函数列出数据类型的字符码
In [44]: np.sctypeDict.keys()
Out[44]: dict_keys(['?', 0,... 'bytes', 'a'])
结束语
如果您对这篇文章有什么意见或者建议,请评论与我讨论.
如果您觉得还不错的话~可以点个喜欢鼓励我哦.
如果您想和我一起学习,请毫不吝啬的私信我吧~