NumPy 数据类型
NumPy 支持的数据类型比 Python 内置的类型要多,下表列举了常用 NumPy 基本类型。
表 2.2.1 NumPy 支持的数据类型
名称 | 描述 |
bool | 布尔型数据类型(True 或者 False) |
int | 默认的整数类型(类似于 C 语言中的 long,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 位浮点数(实数部分和虚数部分) |
NumPy ndarray对象
NumPy 内包含一个常用的对象 ndarray (N-dimension array),也是存储和变换数据的主要⼯具,特点是具有 N 维数组,是一系列同类型数据的集合,以 0 为下标索引。ndarray 具有以下特性:
- 是用于存放同类型元素的多维数组。
- 每个元素在内存中都有相同存储大小的区域。
NumPy 数组 (array) 的维度 (dimesions) 称为秩(rank),秩就是轴(axis)的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。
在 NumPy中,每一个线性的数组称为是一个轴,也就是一个维度。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。所以一维数组就是 NumPy 中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维数。行为水平的,如同平面坐标的 Y 轴,列为垂直的,如同平面坐标的 X 轴。
NumPy 的数组中比较重要 ndarray 对象属性有:
属性 | 说明 |
ndarray.ndim | 秩,即轴的数量或维度的数量 |
ndarray.shape | 数组的维度,对于矩阵,n 行 m 列 |
ndarray.size | 数组元素的总个数,相当于 shape 中 n*m 的值 |
ndarray.dtype | ndarray 对象的元素类型 |
ndarray.itemsize | ndarray 对象中每个元素的大小,以字节为单位 |
ndarray.flags | ndarray 对象的内存信息 |
ndarray.real | ndarray元素的实部 |
ndarray.imag | ndarray 元素的虚部 |
ndarray.data | 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。 |
我门透过以下例子来说明说明轴、维度与秩的关系,底下我们建立一个二维数组,大小为 3 * 2 ( 3 行,2 列),而所谓的 轴 0,就是针对每一行进行操作,轴 1 ,就是针对每一列进行操作,比较简单的判断方法就是 shape 的第 1 的数就是 axis 0,第 2 的数就是 axis 1。
| |
1 | 2 |
3 | 4 |
5 | 6 |
实例
import numpy as np
# 创建一个 3*2 的数组
a = np.array([[1, 2], [3, 4], [5, 6]])
a
# 显示 ndarray 的形状
a.shape
# 显示 ndarray 轴的数量或维度的数量
a.ndim
# 对 轴 0 进行加总
a.sum(axis=0)
# 对 轴 1 进行加总
a.sum(axis=1)
运行结果如下图所示, ndarray.shape 中的呈现方式是 行 * 列。
圖 2-2-1 ndarray的基本操作