矩阵定义|python学习笔记

python是广泛使用的开源编程语言,通过调用numpy模块可以开展几乎所有数学运算。

矩阵形数组(以下简称“矩阵”)的相关运算是最常见的数学运算之一,numpy模块提供了多种矩阵定义子模块,现初步整理如下,供大家灵活取用。

【1】准备工作-安装和测试numpy模块

对于初学者,python编程优先推荐pycharm。

如果初次使用pycharm(默认该软件已经装好),安装numpy步骤为:

(1)在电脑底部搜索框输入cmd,打开命令提示符;

(2)在命令提示符中输入pip install numpy:

pip install numpy

(3)在pycharm中输入以下代码,如果不报错证明安装成功。

import numpy as np

【2】array定义矩阵

打开pycharm,输以下代码,尝试定义矩阵:

import numpy as np  #引入numpy模块
a=np.array([1,2,3])  #使用array子模块定义一维矩阵
b=np.array([[1,2,3],[4,5,6]])  #使用array子模块定义二维矩阵
c=np.array([[1,2,3],[4,5,6],[7,8,9]])  #使用array子模块定义二维矩阵
print('a=',a) #输出一维矩阵
print('b=',b) #输出2X3二维矩阵
print('c=',c) #输出3X3二维矩阵

上述代码中,np就是numpy的缩写,np.array的意思是,在numpy这个大的模块中,调用array子模块来定义矩阵形数组。

运行上述模块,获得结果如下:

图1

【3】matrix定义矩阵

打开pycharm,输入以下代码,尝试定义矩阵:

import numpy as np  #引入numpy模块
a=np.matrix([1,2,3])  #使用matrix子模块定义一维矩阵
b=np.matrix([[1,2,3],[4,5,6]])  #使用matrix子模块定义二维矩阵
c=np.matrix([[1,2,3],[4,5,6],[7,8,9]])  #使用matrix子模块定义二维矩阵
print('a=',a) #输出一维矩阵
print('b=',b) #输出2X3二维矩阵
print('c=',c) #输出3X3二维矩阵

上述代码中,np就是numpy的缩写,np.matrix的意思是,在numpy这个大的模块中,调用matrix子模块来定义矩阵形数组。

运行上述模块,获得结果如下:

图2

 但是,注意到pycharm中出现了黄色提示,如图:

表明可能存在不影响结果的表达形式错误。为此,查阅numpy官方教程:

https://numpy.org/devdocs/reference/generated/numpy.matrix.html#numpy-matrix

看到numpy.matrix举例了两种定义矩阵的方法,上述代码就是方法B。由于该黄色提示不影响输出结果,因此将其直接忽略。

numpy官网举例如图:

此处学习官网教程,使用方法A再次定义矩阵,输入以下代码:

import numpy as np  # 引入numpy模块
a = np.matrix('1,2,3')  # 使用matrix子模块定义一维矩阵
b = np.matrix('1,2,3;4,5,6')  # 使用matrix子模块定义二维矩阵
c = np.matrix('1,2,3;4,5,6;7,8,9')  # 使用matrix子模块定义二维矩阵
print('a=', a)  # 输出一维矩阵
print('b=', b)  # 输出2X3二维矩阵
print('c=', c)  # 输出3X3二维矩阵

运行上述模块,获得结果如图2。

【4】array和matrix定义矩阵显示结果区别

如果细心观察,马上会发现图1和图2并不一致:

图3

如图3所示,对于一维数组组成矩阵的表现形式,array矩阵和matrix矩阵输出结果完全不一致:

【a】在matrix例里,一维数组自身有一个方括号,然后最外侧还有一个方括号,也就是一维数组外侧有两层方括号;

【b】在array例里,一维数组外侧只有一层方括号。

基于上述发现,我们尝试做一维数组组成矩阵的减法,检验这种表达方式的不同,是否会有影响。

在pycharm中输入以下代码:

import numpy as np  #引入numpy模块
a=np.array([1,2,3])  #使用array子模块定义一维矩阵
a1 = np.matrix('1,2,3')  # 使用matrix子模块定义一维矩阵
print('a=', a)  # 输出array子模块定义一维矩阵
print('a1=', a1)  # 输出matrix子模块定义一维矩阵
b = a-a1  # (array子模块定义一维矩阵)-(matrix子模块定义一维矩阵)
print('a-a1=', b)  # 输出3X3二维矩阵
c = a-a1  # (matrix子模块定义一维矩阵)-(array子模块定义一维矩阵)
print('a1-a=', c)  # 输出3X3二维矩阵

运行上述模块,获得结果如下:

图4

如图4可见,无论是:

(array子模块定义一维矩阵)-(matrix子模块定义一维矩阵)

还是:

(matrix子模块定义一维矩阵)-(array子模块定义一维矩阵)

结果都是[[0 0 0]]

也即,array和matrix定义的一维矩阵作差,结构都按照matrix格式强行转化了。

【5】特殊矩阵定义

学习线性代数过程中,一些特殊矩阵举足轻重,numpy模块提供了直接定义它们的方法。

【5.1】纯0矩阵

在pycharm输入以下代码:

import numpy as np  #引入numpy模块
a=np.zeros((2,3)) #定义2行3列全0矩阵
print('a=',a) #输出2行3列全0矩阵
b=np.zeros((5,6)) #定义5行6列全0矩阵
print('b=',b) #输出5行6列全0矩阵

运行上述模块,获得结果如下:

图5

【5.2】纯1矩阵

在pycharm输入以下代码:

import numpy as np  #引入numpy模块
a=np.ones((3,1),dtype=int) #定义2行3列全1矩阵
print('a=',a) #输出2行3列全1矩阵
b=np.ones((3,3)) #定义5行6列全1矩阵
print('b=',b) #输出5行6列全1矩阵

 运行上述模块,获得结果如下:

图6

观察图6,会发现矩阵b的数字1带了小数点,而矩阵a中的1没有小数点。

这是因为矩阵a在定义的时候指定了为整型数据,而矩阵b未指定,因此矩阵b默认为高精度的浮点型数据,从而显示出小数点。

【5.3】对角矩阵

在pycharm输入以下代码:

import numpy as np #引入numpy模块
a=np.eye(3) #定义3X3对角单位矩阵
print('a=',a)
b=np.eye(5,dtype=int) #定义5X5对角单位矩阵
print('b=',b)
c=np.eye(1,dtype=int) #定义1X1对角单位矩阵
print('c=',c)

运行上述模块,获得结果如下:

图7

观察图7,会发现矩阵a、b和c都是标准的对角单位矩阵。矩阵b和c定义时使用了dtype限定为整型。

【6】结语

本文初步总结了numpy模块直接定义矩阵的方法,对新手小白尤其友好。

欢迎大家一起督促学习,一同取得进步。

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值