Python:处理矩阵之NumPy库(中)

目录

        前言

        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]])

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wild_Pointer.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值