目录
前言
1.onse函数
2.diag函数
3.random函数
4.rand函数
5.randn函数
6.randint函数
7.shape函数
8.reshape函数
9.resize函数
10.flatten函数
11.hstack函数
12.vstack函数
前言
本文章是续《Python:处理矩阵之NumPy库(上)》的第二篇文章,也是NumPy库系列的第二篇文章。在前者对NumPy库介绍的基础上,本篇文章将继续对NumPy库的操作进行讲解
onse函数
onse函数用于创建元素全为1的数组
onse(shape,dytpe = None,order = 'C')
参数 | 备注 |
shape | 代表数组尺寸,可以是数值或元组 |
dtype | 代表数组中的元素的数据类型,默认为None |
order | 代表存储多维数组时,是列优先'F'还是行优先'C',默认为行优先 |
表1.onse函数参数表
_numpy.ones((2,2))
#array([[1., 1.],[1., 1.]])_numpy.ones((2,2),dtype = int)
#array([[1, 1],[1, 1]])
PS:函数onse有着zeros函数一样的特点,可参考zeros函数的总结,主要原因是由于shape代表的是数组尺寸
diag函数
diag函数用于生成对角线为列表V的数组
diag(V,K=0)
参数 | 备注 |
V | 代表一个一维数组时,结果形成一个以一维数组为对角线元素的二维数组;是一个二维数组时,结果为数组的对角线元素 |
K | 默认为0,可选参数。决定列表处于对角线的位置,大于零位于对角线上面,小于零则在下面 |
表2.diag函数参数表
_numpy.diag(([1,2,3]))
#array([[1, 0, 0],[0, 2, 0],[0, 0, 3]])_numpy.diag(([1,2,3]),k=1)
#array([[0, 1, 0, 0],[0, 0, 2, 0],[0, 0, 0, 3],[0, 0, 0, 0]])_numpy.diag(([1,2,3]),k=-1)
#array([[0, 0, 0, 0],[1, 0, 0, 0],[0, 2, 0, 0],[0, 0, 3, 0]])
random函数
random函数用于创建元素为size的随机数组
random.random(size = None)
参数 | 备注 |
size | 代表数组尺寸,可以是整数或者整数的元组 |
表3.random函数参数表
_numpy.random.random(2) #生成一行的数组,元素为两个
#array([0.33970551, 0.03921899])_numpy.random.random((1,2))#生成一行二列的二维数组
#array([[0.06720547, 0.67036122]])
rand函数
rand函数用于生成服从均匀分布的随机数组
random.rand(value)
参数 | 备注 |
value | 代表数组维数,可选。默认生成一个数值,而不是数组 |
表4.rand函数参数表
_numpy.random.rand() #生成一个数
#0.9012041794305755_numpy.random.rand(2) #生成一行的数组,元素为两个
#array([0.88723514, 0.16626263])_numpy.random.rand(1,2) #生成一行二列的二维数组
#array([[0.7982949 , 0.94322369]])
randn函数
randn函数用于生成服从正态分布的随机数组
random.randn(value)
参数 | 备注 |
value | 代表数组维数,可选。默认生成一个数值,而不是数组 |
表5.randn函数参数表
_numpy.random.randn() #生成一个数
#-0.04984522010821525_numpy.random.randn(2) #生成一行的数组,元素为两个
#array([-0.15864059, -1.49100105])_numpy.random.randn(1,2) #生成一行二列的二维数组
#array([[-0.09911854, -2.14864424]])
randint函数
randint函数用于生成指定范围的整型随机数
random.randint(low,high = None,size = None,dtype = '1')
参数 | 备注 |
low | 最小值 |
high | 最大值,在含有尺寸参数时可以省略。省略后默认为生成0到最小值随机数组 |
size | 数组的尺寸 |
dtype | 输出数组的格式 |
表6.randint函数参数表
#随机生成在0到5(不包含5)的区间内的一个整数
np.random.randint(0,high = 5)
#4#随机生成一个元素在0到3(不包含3)的区间内的整数,且数组尺寸为10
np.random.randint(3,size = 10)
#array([0, 0, 1, 0, 0, 2, 0, 2, 0, 1])#随机生成一个元素在0到5(不包含5)的区间内的整数,且数组尺寸为一行二列
np.random.randint(0,high = 5,size = (1,2))
#array([[1, 4]])
shape函数
shape函数用于读取矩阵的维度或修改数组尺寸
shape(value)
参数 | 备注 |
value | 要读取的矩阵 |
表7.shape函数参数表
value_A = np.array([1,2,3])
_numpy.shape(value_A) #一维数组只显示列数
#(3,)value_B = np.array([[1,2,3]])
_numpy.shape(value_B) #二维数组显示行数和列数
#(1, 3)value_C = np.array([[[1,2,3]]])
_numpy.shape(value_C) #二维数组显示轴,行数和列数
#(1, 1, 3)value_D = _numpy.array(((1,2,3),(4,5,6))) #两行三列数组
#array([[1, 2, 3],[4, 5, 6]])value_D.shape = (3,2) #修改为三行两列数组
#array([[1, 2],[3, 4],[5, 6]])
PS:使用shape函数输出维度,一维数组只输出列数,二维数组输出行数和列数,以此类推
reshape函数
reshape函数用于修改数值形状
reshape(shape,ordef='C')
参数 | 备注 |
shape | 代表修改后的新数组尺寸 |
order | 代表存储多维数组时,是行优先('C')还是列优先('F')。默认为'C',列优先就会把列元素优先进行排序 |
表8.reshape函数参数表
a = np.array(((0,1),(2,3)))
#array([[0, 1],[2, 3]])a.reshape((4,1)) #行优先
#array([[0],[1],[2],[3]])a.reshape((4,1),order = 'F') #列优先
#array([[0],[2],[1],[3]])
resize函数
resize函数用于修改尺寸,将多余的位置置零
resize(new_shape,refxheck = True)
参数 | 备注 |
new_shape | 代表修改后数组的新尺寸 |
refcheck | 代表是否做引用计数检查,如果为False,则不会检查引用计数。默认值为True |
表9.resize函数参数表
a = np.array(((0,1),(2,3)))
#array([[0, 1],[2, 3]])a.resize((4,1)) #行与列符合个数
#array([[0],[1],[2],[3]])a.resize((4,2),refcheck = False)
#array([[0, 1],[2, 3],[0, 0],[0, 0]])
#行与列不符合个数,refcheck置为False可为空余部分置0
PS:reshape与resize的区别在于,reshape不会因为数组元素不符合尺寸,而补充元素。resize将其参数refxheck置False时,会补充空余的位置,将位置置0
flatten函数
flatten函数用于完成数组展平工作
flatten(order = 'C')
参数 | 备注 |
order | 代表展平方式,沿横轴还是纵轴,默认为'C'横轴展平,'F'为沿纵轴展平 |
表10.flatten函数参数表
a = np.array(((0,1),(2,3)))
#array([[0, 1],[2, 3]])a.flatten() #横轴展平
#array([0, 1, 2, 3, 0, 0, 0, 0])a.flatten(order = 'F') #纵轴展平
#array([0, 2, 0, 0, 1, 3, 0, 0])
hstack函数
hstack函数用于对数组进行横向合并
hstack(tup)
参数 | 备注 |
tup | 代表要合并的数组序列 |
表11.hstack函数参数表
a = np.array(((0,1),(2,3)))
#array([[0, 1],[2, 3]])
b = np.array(((4,5),(6,7)))
#array([[4, 5],[6, 7]])np.hstack((a,b)) #横向合并
#array([[0, 1, 4, 5],[2, 3, 6, 7]])
vstack函数
vstack函数用于对数组进行纵向合并
vstack(tup)
参数 | 备注 |
tup | 代表要合并的数组序列 |
表12.vstack函数参数表
a = np.array(((0,1),(2,3)))
#array([[0, 1],[2, 3]])
b = np.array(((4,5),(6,7)))
#array([[4, 5],[6, 7]])np.vstack((a,b)) #纵向合并
#array([[0, 1],[2, 3],[4, 5],[6, 7]])