您的位置:首页 > 编程语言 > Python开发

python的Numpy之矩阵操作

2017-06-16 10:32 465 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python numpy matrix