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.]]

猜你喜欢

转载自blog.csdn.net/GreenHandCGL/article/details/81164349
今日推荐