最后一次更新日期: 2019/3/9
NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象(ndarray)和用于处理数组的例程集合组成的库。
使用NumPy,开发人员可以执行以下操作:
- 数组的算数和逻辑运算。
- 傅立叶变换和用于图形操作的例程。
- 与线性代数有关的操作。 NumPy 拥有线性代数和随机数生成的内置函数。
使用前先导入模块:
import numpy as np
1. 数据类型
ndarray.dtype
numpy常用数据类型
dtype | type | 类型名 | 说明 |
---|---|---|---|
np.dtype('bool') | np.bool_ | 布尔类型 | True or False |
np.dtype('int8' | 'i1' | 'b') | np.int8 | 8位整数(字节) | -2^7 to 2^7-1 |
np.dtype('int16' | 'i2') | np.int16 | 16位整数 | -2^15 to 2^15-1 |
np.dtype('int32' | 'i4' | 'int' | 'i') | np.int32 | 32位整数 | -2^31 to 2^31-1 |
np.dtype('int64' | 'i8') | np.int64 | 64位整数 | -2^63 to 2^63-1 |
np.dtype('uint8' | 'u1' | 'B') | np.uint8 | 8位无符号整数 | 0 to 2^8-1 |
np.dtype('uint16' | 'u2') | np.uint16 | 16位无符号整数 | 0 to 2^16-1 |
np.dtype('uint32' | 'u4' | 'uint') | np.uint32 | 32位无符号整数 | 0 to 2^32-1 |
np.dtype('uint64' | 'u8') | np.uint64 | 64位无符号整数 | 0 to 2^64-1 |
np.dtype('float16' | 'f2') | np.float16 | 半精度浮点数 | 1符号位+5指数位+10尾数位 |
np.dtype('float32' | 'f4' | 'f') | np.float32 | 单精度浮点数 | 1符号位+8指数位+23尾数位 |
np.dtype('float64' | 'f8' | 'float' | 'd') | np.float64 | 双精度浮点数 | 1符号位+11指数位+52尾数位 |
np.dtype('complex64' | 'c8') | np.complex64 | 64位复数 | 双32位浮点数(实部+虚部) |
np.dtype('complex128' | 'complex' | 'c16') | np.complex128 | 128位复数 | 双64位浮点数(实部+虚部) |
np.dtype('object' | 'O') | object | 对象 | 可用于存储引用类型 |
np.dtype('string_' | 'S' | 'S1' | 'S2' ...) | np.bytes_ | 定长字符串 | 需要声明长度 |
np.dtype('unicode' | 'U' | 'U1' | 'U2' ...) | np.str_ | 定长Unicode字符串 | 需要声明长度 |
np.dtype('datetime64' | 'M') | np.datetime64 | 日期时间 | 可指定日期单位 |
注:同一种dtype可以通过多种字符串标识去声明的,见 | 分割的多项。
python的基本数据类型可被numpy识别,转换为对应类别下的默认类型,int
对应np.int32
,float
对应np.float64
,complex
对应np.complex128
。
dtype与type的转换
获取dtype的type:dtype.type
通过type创建dtype:dtype(type)
dtype与type可以直接进行比较
np.dtype('int')==np.int32
dtype的字节顺序
np.dtype('<i8')
字节顺序是通过对数据类型预先设定"<"或">"来决定的。"<"意味着小端法(最小值存储在最小的地址,即低位组放在最前面)。">"意味着大端法(最重要的字节存储在最小的地址,即高位组放在最前面)。一般情况下采用默认设置即可。
2. 元素个数
ndarray.size
3. 元素的子节大小
ndarray.itemsize
由数据类型决定,每8位为1字节。
4. 总字节数
ndarray.nbytes
由size和itemsize计算得到。
5. 维数
ndarray.ndim
ndarray的每一个维度被描述为轴(axis),维数即轴的个数,轴的编号从0开始。
6. 形状
ndarray.shape
tuple类型,每一位对应到每个轴,例如0轴方向长为10个元素,1轴方向长为5个元素的数组形状为(10,5)
。
7. 内存布局
numpy有两种数据存储的方式,一种是C-order,即行序优先,另一种是Fortran-order,即列序优先,未显式指定时默认C-order。由于内部的优化机制,多数情况下两者在使用时没有明显区别,一般不需要更改默认设置。
但在使用诸如迭代器之类的方法时,可通过order
参数指定元素访问顺序,其中'C'指代C-order,'F'指代F-order。
网友评论