欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > Python:处理矩阵之NumPy库(下)

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

2025/9/26 13:56:31 来源:https://blog.csdn.net/weixin_67035108/article/details/139637410  浏览:    关键词: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函数的广播机制

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词