Python中的向量、矩阵(numpy)
·
1、向量、矩阵表示:
numpy的向量表示是通过array数组来实现的
一维向量(行、列):
在numpy中一维向量用一位数组array([1, 1, 1])表示,既能表示行向量也能表示列向量,一维向量转置后还是原来的样子(因为存储结构是数组)
from numpy import *
v1 = array([0, 0, 0])
v1t = v1.transpose()
print(v1)
print(v1t)
矩阵:
from numpy import *
# 一行三列
v1 = array([[1, 1, 1]])
print(v1)
# 两行三列
v2 = array([[1, 1, 2], [1, 1, 0]])
print(v2)
2、向量计算
线性代数矩阵乘法
from numpy import *
# 一维向量
v1 = array([1, 0, 1])
v11 = array([1, 1, 1])
# 2*3矩阵
v2 = array([[1, 1, 2], [1, 1, 0]])
# 线性代数矩阵乘法,行乘列,再相加
print("一维向量dot: ", dot(v11, v1))
print("一维dot二维: ", dot(v2, v1))
输出结果:
一维向量dot: 2
一维dot二维: [3 1]
对应位置相乘
from numpy import *
# 一维向量
v1 = array([1, 0, 1])
v11 = array([1, 1, 1])
# 2*3矩阵
v2 = array([[1, 1, 2], [1, 1, 0]])
# 对应位置相乘
print("一维向量multiply: ", multiply(v1, v11))
print("一维multiply二维: ", multiply(v1, v2))
输出结果:
一维向量multiply: [1 0 1]
一维multiply二维: [[1 0 2]
[1 0 0]]
加减法
from numpy import *
# 一维向量
v1 = array([1, 0, 1])
v11 = array([1, 1, 1])
# 2*3矩阵
v2 = array([[1, 1, 2], [1, 1, 0]])
# 向量加法
print("一维向量相加: ", v1 + v11)
print("一维加二维: ", v1 + v2)
# 向量减法
print("一维向量相减: ", v1 - v11)
print("一维减二维: ", v1 - v2)
3、矩阵的另一种表示mat
创建矩阵
(1) 在创建矩阵的专用字符串中,矩阵的行与行之间用分号隔开,行内的元素之间用空格隔开。
(2) 用T属性获取转置矩阵
mat函数创建任意矩阵
from numpy import *
a = mat('1 2 3; 4 5 6')
a_transpose = a.T
print("矩阵A: ", a)
print("矩阵A的转置: ", a_transpose)
B = mat(arange(12).reshape(3, 4))
print("元素值为0-11的3*4维矩阵", B)
输出结果:
矩阵A: [[1 2 3]
[4 5 6]]
矩阵A的转置: [[1 4]
[2 5]
[3 6]]
元素值为0-11的3*4维矩阵 [[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
构建全0矩阵
from numpy import *
# 全0矩阵
A = zeros((4, 5))
print("全0矩阵", A)
输出结果:
全0矩阵 [[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
构建单位矩阵
from numpy import *
# 单位矩阵
C = eye(3)
print("单位矩阵C: ", C)
输出结果:
单位矩阵C: [[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
构建复合矩阵
from numpy import *
# 单位矩阵
C = eye(3)
print("单位矩阵C: ", C)
# 复合矩阵
D = C * 2
print("单位矩阵*2: ", D)
print(bmat('C D; D C'))
输出结果:
单位矩阵*2: [[2. 0. 0.]
[0. 2. 0.]
[0. 0. 2.]]
[[1. 0. 0. 2. 0. 0.]
[0. 1. 0. 0. 2. 0.]
[0. 0. 1. 0. 0. 2.]
[2. 0. 0. 1. 0. 0.]
[0. 2. 0. 0. 1. 0.]
[0. 0. 2. 0. 0. 1.]]
更多推荐
已为社区贡献3条内容
所有评论(0)