-
本文将学习numpy数组的一些基础操作:创建数组、取数组子集、数组维度变换、数组的合并与拆分

pip install numpy
ipython
#进入ipython环境
import numpy as np
1、创建数组
-
np.array():最直接的方式
#一维数组
x1 = np.array([1,2,3])
x1.shape
# (3,) 表示长度为3的一维向量
#二维数组
x2 = np.array([[1,3,5],[11,12,13]])
x2.shape
# (2,3) 表示两行三列的二维数组矩阵
1.1 固定取值
-
np.zeros(n, dtype=int)创建长度为n,值全为0的整型的一维数组 -
np.ones((a,b), dtype=float)创建a行b列,值全为1的浮点型的二维数组 -
np.full((a,b),x, dtype=int/float)创建a行b列,值全为x的二维数组
np.full((3,3),1.11)
# array([[1.11, 1.11, 1.11],
# [1.11, 1.11, 1.11],
# [1.11, 1.11, 1.11]])
1.2 规律分布
-
np.arange()等差数列

-
np.random.randint()随机整数

-
np.random.random(10)长度为10,符合0~1均匀分布的一维数组 -
np.random.normal(0, 1, c(2,3))两行三列的,符合均值为0,标准差为1正态分布的二维数组
2、数组取子集
2.1 索引从0开始
参看下图
- 类似python的list取子集方式,numpy数组的索引也是从0开始;
-
负数的索引可以理解为倒数第n个值。

2.2 取单个值的子集
- 直接按坐标索引查看即可

2.3 切片[a:b:c]--左闭(包括)右开(不包括)加步长
- 对于长度为10的一维数组x1,
x1[0:5]表示索引0到索引4的子集(不包括索引5),默认步长为1
; - a为0时,可省略;a,b均省略时,则表示全集;
- 步长为负数时,表示逆序取子集

- 对于二维数组,也是类似的取法。
x2[a:b,c:d]

x2[2,:]:表示取第3行;x2[:,0]:表示取第1列
2.3 列表(多个)索引值取子集

2.4 逻辑布尔值取子集

- AND:
&、OR:|、NOT:~

关于数组子集的联动性
-
若将一个数组的子集赋予给一个新对象,那么当这个新对象发生变化时,原始数组也会发生相应变化。如下图操作所示--

-
copy()方法可创建不相关联的子集副本

3、数组维度变换
- 矩阵转置
T()方法:行列转换

- 维度转换
reshaple()方法:按照希望的可执行的维度结果转换

4、数组的合并与拆分
4.1 数组合并
-
concatenate()可连接两个一维数组,或者按行/列合并两个二维数组。


-
vstack()纵向合并两个数组,只要这两个数组的列数相同

-
hstack()横向合并两个数组,只要这两个数组的行数相同

4.2 数组拆分
split()拆分一维数组,参数的索引值指定分裂点的位置-
当函数结果返回多个对象时,在等号前就要设置相应个数的对象名

-
vsplit():横向拆分一个二维数组(上下);同理hsplit():纵向拆分一个二维数组
数组拆分(左右)











