0.基础知识篇
1.导入numpy包
2.创建矩阵
3.矩阵的基本属性
4.矩阵的基本方法
5.创建默认矩阵
6.矩阵运算
7.创建等差和等比数列矩阵
8.扩展矩阵函数tile()
9.求矩阵最小值,最大值,均值:min,max,mean
10.行列式计算
0.基础知识篇
Numpy的主要操作对象是多维数组。多维数组的维度叫轴(axes),轴的个数叫秩(rank),例如三维数组的秩就是3.
1.导入numpy包
要进行numpy的操作,必须先导入numpy包:
import numpy as np
2.创建矩阵
创建矩阵 一般用到 两种方法: matrix或 array
matrix:
如创建矩阵:
矩阵行之间用分号间隔
import numpy as np
a = np.matrix('1 2 3 ;4 5 6 ; 1 1 0 ')
print(a)
打印结果:
[[1 2 3]
[4 5 6]
[1 1 0]]
array:
from numpy import *
c = array( [ [1,2], [3,4] ])
print(c)
print(c.dtype)
array 后 可跟一个 dtype 参数,用于指定 array 中的内容。默认情况 dtype 为 int32 。dtype还可以设置为 float 和 complex(表示复数)
from numpy import *
c = array( [ [1,2], [3,4] ] ,dtype =complex)
print(c)
打印结果:
[[ 1.+0.j 2.+0.j]
[ 3.+0.j 4.+0.j]]
3.矩阵的基本属性(使用与matrix 和 array)
如有矩阵A:
(1)B = A.T #表示矩阵A的转置矩阵为B
(2)B = A.I #表示矩阵A的逆矩阵为B
(3)B = A.H #表示复数矩阵A的共轭矩阵为B
(4)A.ndim #返回数组秩,二维的秩就是2,三维的秩就是3
(5)A.shape #返回矩阵的行列,如 m行n列的矩阵,shape返回就是(m,n),因此 A.shape[0]返回矩阵的行,A.shape[1] 返回矩阵的列
(6)A.dtype #返回矩阵元素类型
(7)A.size #返回矩阵的元素总数目
(8)A.itemsize #返回矩阵中每个元素的大小
4.矩阵的基本方法(使用与 matrix 和 array)
若有矩阵A:
(1)A.getT() #返回本身的转置矩阵
(2)A.getI() #返回本身的逆矩阵
(3)A.getA() #返回自己,但是作为ndarray数组返回。
(4)A.getA1() #返回自己,但是全部变为一维数组返回
import numpy as np
A = np.matrix('1 1 ;2 2')
print(A.getA1())
打印结果:[1 1 2 2]
(5)A.argsort:返回的是矩阵的值从小到大(或从大到小)的索引值
from numpy import *
A = array([[1,2],[4,3]])
print('矩阵A:')
print(A)
print('从小到大:')
print(argsort(A))
print('从大到小:')
print(argsort(-A))
打印结果:
矩阵A:
[[1 2]
[4 3]]
从小到大:
[[0 1]
[1 0]]
从大到小:
[[1 0]
[0 1]]
以从小到大为例:第一行的 [0,1] 表示最小的为索引值为0的元素,次小的为索引值为1的元素。
5.创建默认矩阵
(1)zeros() :创建全零矩阵,如:A = zeros((3,4)) 表示此全0矩阵是3行4列的
(2)ones() :创建全1矩阵
(3)eye(n,k):创建 n*n的单位矩阵。k为可选值,默认为0.当k=0时,矩阵只有对角线为1,其他都为0。当k>0,如k=1,矩阵的对角线上一行为1,其余为0
from numpy import *
A = eye(3,k=1)
print(A)
打印结果:
[[ 0. 1. 0.]
[ 0. 0. 1.]
[ 0. 0. 0.]]
k<0 则是对角线下一行为1,其余为0
6.矩阵运算
(1)矩阵加减法:若有矩阵a 和 b,则矩阵加减分别为: a+b , a - b
(2)矩阵乘法:c = dot(a,b)
(3)矩阵中每个元素n次方:c = a**n (其中a 为矩阵,n为n次方)
7.创建等差和等比数列矩阵
(1)创建等差数列:linspace
from numpy import *
x1 = linspace(1,10,10,dtype=int32)
print(x1)
第一个参数为等差数列起始项,第二个参数为等差数列最后一项,第三个参数为一共有多少项
dtype可以不写,默认的是浮点型 float64(2)创建等比数列:logspace
logspace创建的等比数列的起始项和结束项都是以10为底的。如 logspace(0,3,4)表示起始项为10^0,结束项为10^3,共有4个数
from numpy import *
x1 = logspace(0,3,4)
print(x1)
结果:[ 1. 10. 100. 1000.]
同样可以对 dtype进行设置
8.扩展矩阵函数tile()
tile( matrix,(r,c) ) :表示以矩阵 matrix 为一个单位A,(r,c)表示扩展的矩阵的行列
如有 矩阵A=[ 1,2,3] ,
代码展示:
from numpy import *
A = array([1,2,3])
B = tile(A,(2,1))
print(B)
打印结果:
[[1 2 3]
[1 2 3]]
当然 tile中的(r,c)也可以取其他的数,道理是一样的。
9.求矩阵最小值,最大值,均值:min,max,mean
无论是min(),max(),mean(),都有一个重要参数 axis,以一个 m*n矩阵A举例:
当axis 不设置值:返回一个实数,表示矩阵中的 最小值/最大值/平均值
当axis =0:返回每列中的 最小值/最大值/平均值 ,返回一个 1*n 矩阵
当axis = 1:返回每行中的 最小值/最大值/平均值 ,返回一个 m*1矩阵
以 mean()举例:
from numpy import *
A = array([[1,2,3],[7,8,9]])
print(A)
print('.............')
a = A.mean(axis=0)
print('每列的平均值:')
print(a)
打印结果:
[[1 2 3]
[7 8 9]]
.............
每列的平均值:
[ 4. 5. 6.]
同样有 axis操作的函数还有求和函数 sum()
10.行列式计算(方法适合于matrix 和 array)
用到 numpy 下的linalg模块的 det 方法:
import numpy as np
a = np.matrix('2 0 0;0 2 0; 0 0 2')
print(a)
b = np.linalg.det(a)
print(b)
[[2 0 0]
[0 2 0]
[0 0 2]]
8.0