python的array和list_Python之list、array和matrix用法 | 学步园

作者:金良(golden1314521@gmail.com) csdn博客:http://blog.csdn.net/u012176591

1.list(列表)

删除列表myList的第i个元素:del myList[i]

方阵A转置:zip(*A)

求各行的和:map(sum,A)

求各列的和:map(sum,zip(*A))

矩阵乘法函数dot()用法:

myMat1 = [[1,0,0,0,2],\

[0,0,3,0,0],\

[0,0,0,0,0],\

[0,4,0,0,0]]

myMat2 = copy.deepcopy(myMat1)

v1 = [2,0,2,0,0]

v2 = [0,1,1,1,0]

i、一维与一维:

print dot(v1,v2)

打印2.

ii、一维与二维:

print dot(myMat1,v1)

打印[2 6 0 0]

print dot(v1,list(array(myMat1).transpose()))

打印[2 6 0 0]

iii、二维与二维:

A = [[1,2,3],[4,5,6]]

B = [[1,4],[2,5],[3,6]]

print dot(A,B)

输出:

[[14 32]

[32 77]]

求特征值和特征向量:

A = [[0,1,0,1,1,1],[0,0,0,1,1,1],[1,1,0,1,0,0],[0,0,0,0,1,1],[0,0,1,0,0,1],[0,0,1,0,0,0]]

a,b = linalg.eig(A)

a是特征值组成的行向量(array),b由特征向量(列向量)组成的矩阵(array)

list不能直接除以一个数,要转换成array才行

A = [[0,1,0,1,1,1],[0,0,0,1,1,1],[1,1,0,1,0,0],[0,0,0,0,1,1],[0,0,1,0,0,1],[0,0,1,0,0,0]]

print array(A)/2.0

列表不能直接加减:

print myList*2

print [myList]*2

结果依次是:

[1, 2, 3, 1, 2, 3]

[[1, 2, 3], [1, 2, 3]]

求行列式:

A = [[0,1,0,1,1,1],[0,0,0,1,1,1],[1,1,0,1,0,0],[0,0,0,0,1,1],[0,0,1,0,0,1],[0,0,1,0,0,0]]

print linalg.det(list(A))

print linalg.det(array(A))

print linalg.det(mat(A))

注意A必须是方阵。

求逆:

print linalg.inv(list(A))

print linalg.inv(array(A))

print linalg.inv(mat(A))

创建对角矩阵:

print diag([1,2,3])

A = diag([1,2,3])

a,b = linalg.eig(A)

print "A: ",A

print "a: ",a

print "b: ",b

结果:

A: [[1 0 0]

[0 2 0]

[0 0 3]]

a: [ 1. 2. 3.]

b: [[ 1. 0. 0.]

[ 0. 1. 0.]

[ 0. 0. 1.]]

list索引:

x = range(10)

print type(x)#list类型

print x[-2]#从后往前,最后一个是-1,倒数第二个是-2

print x[1:7]#左闭右开

print x[1:7:2]#指定步长值

[[ 6 8 10]

[18 20 22]]

8

[1, 2, 3, 4, 5, 6]

[1, 3, 5]

2.array(数组):

数组和矩阵都可以行列转换(类似于矩阵转置),列表无此用法:

A = [[0,1,0,1,1,1],[0,0,0,1,1,1],[1,1,0,1,0,0],[0,0,0,0,1,1],[0,0,1,0,0,1],[0,0,1,0,0,0]]

print array(A).T

print mat(A).T

print array(A).transpose()

print mat(A).transpose()

数组和矩阵都可以加减:

A = [[0,1,0,1,1,1],[0,0,0,1,1,1],[1,1,0,1,0,0],[0,0,0,0,1,1],[0,0,1,0,0,1],[0,0,1,0,0,0]]

B= [[1]*6]*6

print array(A)+array(B)

print array(A)-array(B)

数组索引:

A=arange(36).reshape(6,6)#数组

print A

print array(A)[1,2]#第1行第2列

print array(A)[1:5:2,::2]#左闭右开,输出1,3行,每行步长2

输出:

[[ 0 1 2 3 4 5]

[ 6 7 8 9 10 11]

[12 13 14 15 16 17]

[18 19 20 21 22 23]

[24 25 26 27 28 29]

[30 31 32 33 34 35]]

8

[[ 6 8 10]

[18 20 22]]

3.mat:

官方文档建议我们使用二维数组代替矩阵来进行矩阵运算;因为二维数组用得较多,而且基本可取代矩阵。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值