import numpy as np
1.特殊数组的创建方法
1.1、全0数组
np.zeros(6, dtype=‘int’) # 默认是浮点型,转化为整型
out:array([0, 0, 0, 0, 0, 0])
1.2、全1数组
np.ones((3, 2)) # 三行两列
array([[1., 1.],
[1., 1.],
[1., 1.]])
1.3、 随机数组:rand生成服从0-1分布的随机数
np.random.rand(5) # 返回服从0-1分布的5个数
1.4、随机数组:randn生成标准正态分布的随机数
np.random.randn(5) # 默认是浮点型,转化为整型
out:array([ 1.84519234, 0.44723496, 0.61016206, -0.39027894, -0.26761442])
1.5、随机数组:randn生成标准正态分布的随机数
np.random.randn(5) # 默认是浮点型,转化为整型
out:array([ 1.84519234, 0.44723496, 0.61016206, -0.39027894, -0.26761442])
1.6、 随机数组:normal生成元素是指定随机分布的数组
np.random.normal(4, 2, (3,3)) # 三行三列,元素服从均值4、方差为2的正态分布
out:array([[ 5.53705005, 1.95477989, 3.07768639],
[ 4.15457427, 3.69587242, 3.18715934],
[ 5.46093734, 6.60888084, -0.55980278]])
1.7、 生成全数值相同的数组
np.full((2, 2), 3) # 二行二列,全是3的数组
out:array([[3, 3],
[3, 3]])
1.8、 生成单位矩阵
np.eye(2,dtype=‘int’) # 二行二列单位矩阵
out:array([[1, 0],
[0, 1]])
1.8、 生成对角矩阵
np.diag([1, 2, 3])
out:array([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]])
1.9、 按照某种形状生成ndarray
e = [[2,1,3],[4,3,2]]
np.array(e)
out:array([[2, 1, 3],
[4, 3, 2]])
np.ones_like(e) #同e形状的全1数组
out:array([[1, 1, 1],
[1, 1, 1]])
np.zeros_like(e) #同e形状的全0数组
out:array([[0, 0, 0],
[0, 0, 0]])
np.full_like(e,5) #同e形状的全5数组
2.数组常用变形方法
类似于矩阵,数组在执行实际运算过程中,也经常会涉及一些形变的方法。
a1 = np.random.rand(2, 3) 2行3列的随机数组
2.1、 reshape方法:调整数组行列结构
a1.reshape(3, 2) #重置为3行2列
2.2、 reshape方法:array.reshape(-1, 1)、array.reshape(1, -1)用法
可以将-1理解为占位符
a1.reshape(-1, 1) #重置为多行1列的二维数组
a1.reshape(1, -1) #重置为1行多列的二维数组
需要注意的是,转化后的数组仍然是二维数组。若要实现维度的转化,则需要使用flatten函数。
2.3、 flatten方法:将数组降为一维数组
a1.flatten()
2.4、 T方法:数组的转置
a1.T # 就类似于矩阵的转置
3.数组的拼接
对属于数组而言,由于经常涉及到数组的组合运算,因此数组和数组之间的组合拼接,对于数据技术来说,也是常用操作。
a1 = np.array([[1, 2], [3, 4]])
a2 = np.array([[5, 6], [7, 8]])
3.1、vstack:纵向拼接,按列拼接,新增行,上下拼接
np.vstack([a1, a2]) # 需要输入一个序列
out:array([[1, 2], [3, 4], [5, 6], [7, 8]])3.2、hstack:横向拼接,按行拼接,新增列,左右拼接
np.hstack([a1, a2]) ) # 需要输入一个序列
out:array([[1, 2, 5, 6], [3, 4, 7, 8]])4.数组的切分
有拼接就有切分。接下来,简单看下数组的切分方法。
a = np.arange(24).reshape(3,8) # 创建3行8列的二维数组
4.1、hsplit:左右切分
- np.hsplit(a,2) # 当第二个参数只输入一个数时,是进行等分;
无法等分的情况会报错(ValueError: array split does not result in an equal division)
当第二个参数输入一个序列时,则是根据列标进行切分:
- np.hsplit(a,(1,2,3)) # 第一列、第二列、第三列后进行切分
4.2、vsplit:上下切分
- np.vsplit(a,3) # 三等分
- np.vsplit(a,(1, )) # 第一行后进行切分
4.3、array_split:通用切分方法
axis = 0,上下切分
axis = 1,左右切分
- np.array_split(a, 2, axis=1) # axis = 1,左右切分,均分
- np.array_split(a, (1, ), axis=1) # 根据列标进行切分
- np.array_split(a, 3, axis=0) # axis = 0,左右切分,3等分
- np.array_split(a, (1, ), axis=0) # 根据列标进行切分