数组基础
几类基本的数组操作
1、 数组的属性
确定数组的大小、形状、存储大小、数据类型。
2、数组的索引
获取和设置数组各个元素的值。
3、数组的切分
在大的数组中获取或设置更小的子数组。
4、数组的变形
改变给定数组的形状。
5、数组的拼接和分裂
将多个数组合并为一个,以及将一个数组分裂成多个。
一 数组的属性
- ndim:数组的维度
- shape: 数组每个维度的大小
- size: 数组的总大小
- itemsize: 每个数组元素字节大小
- nbytes:数组总字节大小
一般来说,可以认为nbytes跟itemsize和size的乘积相等
二 数组索引
在一维数组中,可以通过中括号指定索引获取第i个值(从0开始计数),也可以用负值索引。
在多维数组中,可以用逗号分隔的索引元组获取元素,也可以用索引的方式修改元素值。但要注意的是,和python列表不同,Numpy数组是固定类型的,如果修改元素值类型不匹配,Numpy将会向上转换(如果可行)
三 数组切片:获取子数组
Numpy切片语法和Python列表的标准切片语法相同,为了获取数组x的一个切片,可以用以下方式:
x[start:stop:step]
1、一维子数组
2、多维子数组
多维数组也采用同样的方式处理,用逗号分隔。
3、获取数组的行与列
可以通过索引和切片组合获取数组的单行和单列。用一个冒号(:)表示空切片
4、非副本视图的子数组
数组切片返回的是数组数据的视图,而不是数值数据的副本。修改子数组,将会原始数组也被修改了。
5、创建数组的副本
可以通过copy()方法实现
四 数组的变形
shape方法或者更简单地在一个切片操作中利用newaxis关键字。
五 数组拼接和分裂
np.concatenate
np.split np.hsplit np.vsplit