案例:科学计算上手,矩阵运算与层次分析

来自CloudWiki
跳转至: 导航搜索

Numpy数组的矩阵运算

  • 简单来说,两个数组的运算本质上就是两个数组对应位置的数据运算,形成的一个相同形状的数组。

import numpy as np
x = np.array([[1,2,1],[4,5,6]])
y = np.array([[1,2,1],[3,4,5]])
print(x+y)
>>>>[[ 2 4 2]
>>>>[ 7 9 11]]
print(x-y)
>>>>[[0 0 0]
>>>>[1 1 1]]
print(x*y)
>>>>[[ 1 4 1]
>>>>[12 20 30]]



注意:如果是列和行其中之一有空缺是可以通过复制来运算的。 但是蓝本不能有缺或者多,即行和列都不完整。

矩阵数组的创建


import numpy as np


a = np.arange(3,10)#默认从3开始到10(不包括10),步长为1
print(a)
>>>[3 4 5 6 7 8 9]
a_ones = np.ones((3,4))#创建3*4的全1矩阵
print(a_ones )
>>>>[[1. 1. 1. 1.]
>>>>[1. 1. 1. 1.]
>>>>1. 1. 1. 1.]]


a_zeros = np.zeros((3,4))#创建3*4的全0矩阵
print(a_zeros )
>>>>[[0. 0. 0. 0.]
>>>>[0. 0. 0. 0.]
>>>>[0. 0. 0. 0.]]


a_eye = np.eye(3)#创建3阶单位矩阵
print(a_eye)
>>>>[[1. 0. 0.]
>>>>[0. 1. 0.]
>>>>[0. 0. 1.]]


矩阵数组的点乘 —— dot



import numpy as np


a = np.array([[1,2,3],[7,6,2]])
b = np.array([[1,2],[7,6],[8,2]])
print(a.dot(b))
>>>>[[39 20]
>>>>[65 54]]
print(a[0,:].dot(b))#第一行的所有列*b


行列式的叉乘 —— linalg.det


import numpy as np


a = np.array([[2,3],[6,2]])
print(np.linalg.det(a))
>>>-14.000000000000004