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

目录

        1.前言

        2.concatenate函数

        3.hsplit函数

        4.vsplit函数

        5.split函数

        6.array_split函数

        7.matrix函数

        8.mat函数

        9.bmat函数

        10.multiply函数

        11.矩阵属性

        12.ufunc函数的运算

        13.ufuns函数的广播机制


前言

        本篇文章作为介绍NumPy库的最后一章,其内容包含常用的NumPy函数以及关于ufuns的广播机制。跟本系列的其他文章一样,本篇文章也是对函数的参数进行讲解,提供代码示例


concatenate函数

        concatenate函数用于实现多个数组的纵向和横向合并

concatenate((tup),axis = 0,out  = None)
备注参数
tup代表要合并的数组序列
axis代表沿哪一个方向组合,默认为0,代表横轴
out代表输出格式,默认为None

表1.concatenate函数参数表

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.concatenate((a,b))    #横向合并
#array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7]])

np.concatenate((a,b),axis = 1)    #纵向合并
#array([[0, 1, 4, 5],
       [2, 3, 6, 7]])

hsplit函数

        hsplit函数用于横向分隔数组为两个数组

hsplit(ary,indices_or_sections)
备注参数
ary代表要分隔的数组
indices_or_sections代表分隔的份数或位置

表2.hsplit函数参数表

ary = np.random.randint(1,10,size = (4,2))
#array([[3, 5],
#      [7, 8],
#       [5, 8],
#       [5, 5]])

np.haplit(ary,2)
#[array([[3],
#        [7],
#        [5],
#        [5]]),
# array([[5],
#        [8],
#        [8],
#        [5]])]

vsplit函数

        vsplit函数用于纵向分隔数组为两个数组

vsplit(ary,indices_or_sections)
备注参数
ary代表要分隔的数组
indices_or_sections代表分隔的份数或位置

表3.vsplit函数参数表

ary = np.random.randint(1,10,size = (4,2))
#array([[3, 5],
#      [7, 8],
#       [5, 8],
#       [5, 5]])

np.vsplit(ary,2)
#[array([[3, 5],
#        [7, 8]]),
# array([[5, 8],
#       [5, 5]])]

split函数

        split函数用于分隔数组为两个数组

split(ary,indices_or_sections,axis=0)
备注参数
ary代表要分隔的数组
indices_or_sections代表分隔的份数或位置
axis代表分隔方向,默认为1横向,0代表纵向

表4.split函数参数表

ary = np.random.randint(1,10,size = (4,2))
#array([[3, 5],
#      [7, 8],
#       [5, 8],
#       [5, 5]])

np.split(ary,2,axis = 0)
#[array([[3, 5],
#        [7, 8]]),
# array([[5, 8],
#        [5, 5]])]

np.split(ary,2,axis = 1)
#[array([[3],
#        [7],
#        [5],
#        [5]]),
# array([[5],
#        [8],
#        [8],
#        [5]])]

array_split函数

        array_split函数用于分隔不等量的数组为两个数组

array_split(ary,indices_or_sections,axis=0)
备注参数
ary代表要分隔的数组
indices_or_sections代表分隔的份数或位置
axis代表分隔方向,默认为1横向,0代表纵向

表5.array_split函数参数表

PS:在分隔不等量的数组时,分隔后的第一个数组占多数,其他按比例分隔

ary = np.random.randint(1,10,size = (3,3))
#array([[8, 2, 6],
#       [5, 9, 5],
#       [4, 1, 1]])

np.array_split(value,2,axis = 1)
#[array([[8, 2],
#        [5, 9],
#        [4, 1]]),
#第一个数组占大部分
# array([[6],
#        [5],
#        [1]])]

#np.array_split(value,2,axis = 0)
#[array([[8, 2, 6],
#        [5, 9, 5]]),
#第一个数组占大部分
# array([[4, 1, 1]])]

matrix函数

        matrix函数用于创建矩阵,默认为传入的数据创建副本

matrix(data,dtype=None,copy=True)
备注参数
data代表接收的数据,数组或字符串;字符串使用","或空格分隔列,使用";"分隔行
dtype用来指定矩阵元素的数据类型,默认为None
copy传入的data如果是数组,表示根据数组创建对应的副本,默认为True创建副本

表6.array_split函数参数表

np.matrix("1,2,3")
#matrix([[1, 2, 3]])

np.matrix("1;2;3")
#matrix([[1],
#        [2],
#        [3]])

np.matrix("1 2 3")
#matrix([[1, 2, 3]])

np.matrix("1,2,3;4 5 6")
#matrix([[1, 2, 3],
#        [4, 5, 6]])

mat函数

        mat函数用于创建矩阵,跟matrix函数区别在于不创建副本

mat(data,dtype=None)
备注参数
data代表接收的数据,数组或字符串;字符串使用","或空格分隔列,使用";"分隔行

表7.mat函数参数表


bmat函数

        bmat函数用于将小矩阵组合成大矩阵

bmat(obj,ldict=None,qdict=None)
备注参数
obj用于接收数据,数据为字符串或数组
ldict字典,可选。用于替换当前帧中的本地操作数
gdict字典,可选。用于替换当前帧中的全局操作数

表8.bmat函数参数表

arr1 = np.ones((1,2))   #创建尺寸为1x2的,元素全为1的数组
arr2 = np.zeros((1,2))  #创建尺寸为1x2的,元素全为0的数组

np.bmat("arr1;arr2")    #传入的obj必须尺寸相对应
#matrix([[1., 1.],
#        [0., 0.]])

multiply函数

        multiply函数用于求传入的矩阵的对应元素乘积

multiply(data)
备注参数
data用于接收数据

表9.multiply函数参数表

arr1 = np.ones((1,2))        #创建尺寸为1x2的,元素全为1的数组
arr2 = np.zeros((1,2))        #创建尺寸为1x2的,元素全为0的数组

np.multiply(arr1,arr2)
#array([[0., 0.]])

矩阵属性

属性说明
T

返回自身的转置

H返回自身的共轭转置
I返回自身的逆矩阵
A返回自身数据的二维数组的一个视图

表10.矩阵属性

        代码示例:

value = np.random.randint(1,10,size = (4,3))
arr = np.matrix(value)
#matrix([[1, 7, 3],
#       [5, 1, 3],
#       [8, 8, 6],
#       [7, 5, 6]])

arr.I            #返回自身的逆矩阵
#matrix([[-0.22      ,  0.06      ,  0.36      , -0.28      ],
#        [ 0.04666667, -0.07333333,  0.22666667, -0.21333333],
#        [ 0.24444444,  0.04444444, -0.62222222,  0.64444444]])

arr.T            #返回自身的转置
#matrix([[1, 5, 8, 7],
#        [7, 1, 8, 5],
#        [3, 3, 6, 6]])

arr.H            #返回自身的共轭转置
#matrix([[1, 5, 8, 7],
#        [7, 1, 8, 5],
#       [3, 3, 6, 6]])

arr.A            #返回自身数据的二维数组的视图
#array([[1, 7, 3],
#       [5, 1, 3],
#       [8, 8, 6],
#       [7, 5, 6]])

ufunc函数的运算

m = np.array([1,2,3])
n = np.array([4,5,6])
print("相加:",m+n)
print("相减:",m-n)
print("相乘:",m*n)
print("相除:",m/n)
print("幂运算:",m**n)

#相加: [5 7 9]
#相减: [-3 -3 -3]
#相乘: [ 4 10 18]
#相除: [0.25 0.4  0.5 ]
#幂运算: [  1  32 729]

ufuns函数的广播机制

        广播机制是指当不同形状的数组之间执行算术运算时,会通过扩充尺寸较小的数组来与尺寸较大的数组相匹配,后再进行运算

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Wild_Pointer.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值