numpy 简介
N维数组对象:ndarray
Python已有列表类型,为什么需要一个数组对象 (类型 ) ?
• 数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据
• 设置专门的数组对象,经过优化,可以提升这类应用的运算速度 观察:科学计算中,一个维度所有数据的类型往往相同
• 数组对象采用相同的数据类型,有助于节省运算和存储空间
1 numpy的对象:ndarray ,N维数组对象。
它由两部分构成:
- 实际的数据
- 描述这戏数据的的元数据(数据维度,数据类型等)
ndarray对象一般要求元素类型相同,包括数据类型,每个数组中元素的个数,数组的下标从0开始
2 ndarray对象的属性
属性 说明
.ndim 秩,即轴的数量或维度的数量
.shape ndarray对象的尺度,对于矩阵, n 行 m 列
.size ndarray对象元素的个数,相当于.shape 中n*m的值
.dtype ndarray对象的元素类型
.itemsize ndarray对象中每个元素的大小,以字节为单位
3 ndarray的元素类型:
bool 布尔类型,True 或False
intc 与 C语言中的int类型一致,一般是int32 或int64
intp 用于索引的整数,与 C语言中ssize_t一致,int32 或int64
int8 字节长度的整数,取值: [ ‐128, 127]
int16 16位长度的整数,取值: [ ‐32768, 32767]
int32 32位长度的整数,取值: [ ‐ 2^31 , 2^31 ‐1]
int64 64位长度的整数,取值: [ ‐ 2^63 , 2^63 ‐1]
uint8 8位无符号整数,取值:[0, 255]
uint16 16位无符号整数,取值:[0, 65535]
uint32 32位无符号整数,取值:[0, 232 ‐1]
uint64 32位无符号整数,取值:[0, 264 ‐1]
float16 16位半精度浮点数: 1位符号位, 5位指数,10位尾数
float32 32位半精度浮点数: 1位符号位, 8位指数,23位尾数
float64 64位半精度浮点数: 1位符号位,11位指数,52位尾数
complex64 复数类型,实部和虚部都是32位浮点数
complex128 复数类型,实部和虚部都是64位浮点数
4 ndarray数组的创建方法
(1)从Python中的列表、元组等类型创建ndarray数组
x = np.array(list/tuple )
x = np.array(list/tuple, dtype=np.float32)
当np.array()不指定dtype时,NumPy将根据数据情况关联一个dtype类型
( 2)使用NumPy中函数创建ndarray数组,如:arange, ones, zeros 等
np.arange(n) 类似range()函数,返回ndarray类型,元素从 0 到 n ‐ 1
np.ones(shape) 根据shape生成一个全 1数组,shape是元组类型
np.zeros(shape) 根据shape生成一个全 0数组,shape是元组类型
np.full(shape,val) 根据shape生成一个数组,每个元素值都是val
np.eye(n) 创建一个正方的n*n单位矩阵,对角线为 1,其余为 0
np.ones_like(a) 根据数组 a的形状生成一个全 1数组
np.zeros_like(a) 根据数组 a的形状生成一个全 0数组
np.full_like(a,val) 根据数组 a的形状生成一个数组,每个元素值都是val
np.linspace() 根据起止数据等间距地填充数据,形成数组
np.concatenate() 将两个或多个数组合并成一个新的数组