上篇文章讲解了python使用sympy求导,定积分和不定积分求解的一些基本方法,这次我们就来学习一下矩阵在python中的使用和运算吧ヽ( ̄▽ ̄)ノ
本文使用的是大名鼎鼎的Numpy
,此库在线性代数,傅里叶变换和随机数等方面有较为突出的表现,而且也是使用率非常高的库!
1.安装和导入
pip3 install numpy
如果你有多个python版本的话,可以采用官方提供的方法。
python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose
Ubuntu and Debian
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
Mac
对于Macports的 Python 3.5,在终端中执行以下命令:
(其他版本类似)
sudo port install py35-numpy py35-scipy py35-matplotlib py35-ipython +notebook py35-pandas py35-sympy py35-nose
当然,还是建议使用anaconda,里面有大量的科学包,方便使用!
2.矩阵的创建
我会根据我的理解和官方教程来进行使用,英语好的可以直接去官网看,防止我可能出现的理解误差。
请认真看注释!
array()函数
array是用来创建数组的,但同样可以创建出矩阵,不过需要转换
# 多个维度
import numpy as np
h = np.array([[1, 2], [3, 4],[5,6]]) #逗号隔开,数字后的空格可以省去
print (h)
补充知识:
构建随机数组
# 构建一个4*4的随机数组
array_1 = random.rand(4,4)
mat()函数
mat()函数将目标数据的类型转化成矩阵(matrix)与MATLAB中matrices等价。
有两种创造矩阵的方法
import numpy as np
a = np.mat('1 3;3 4')
b = np.mat([[1,2],[3,4]])
print(a)
print(b)
两者的区别:
虽然mat和array输出的矩阵看起来是一模一样的,但是我们可以用type()方法来查看他们的不同
print(type(a))
print(type(b))
print(type(h)) //此处的a,b,h与上文的对应
输出:
<class 'numpy.matrix'>
<class 'numpy.matrix'>
<class 'numpy.ndarray'>
那么这个格式的不同意味着什么呢?
首先,mat() 函数与array()函数生成矩阵所需的数据格式有区别,mat()函数中数据可以为字符串以分号(;)分割或者为列表形式以逗号(,)分割,而array()函数中数据只能为后者形式。
因为类型不同,则要用mat函数转换为矩阵后才能进行一些线性代数的操作。(单词释义:matrix
:矩阵,array
:序列,排列)
转换:
matrix_1 = np.mat(c)
3.
4.矩阵的运算
NumPy 提供了线性代数函数库 linalg,该库包含了线性代数所需的所有功能,可以看看下面的说明:
函数 | 描述 |
---|---|
dot | 两个数组的点积,即元素对应相乘。 |
vdot | 两个向量的点积 |
inner | 两个数组的内积 |
matmul | 两个数组的矩阵积 |
determinant | 数组的行列式 |
solve | 求解线性矩阵方程 |
inv | 计算矩阵的乘法逆矩阵 |
5.
参考链接:
https://www.cnblogs.com/wj-1314/p/10244807.html
https://www.runoob.com/numpy/numpy-mathematical-functions.html