📅  最后修改于: 2023-12-03 15:19:28.406000             🧑  作者: Mango
在Python中表示向量的方法有很多,可以使用列表、元组、numpy数组、pandas Series等数据结构来存储。
使用列表存储向量的每个分量,可以很方便地进行向量的加减、数乘等运算。
v1 = [1, 2, 3]
v2 = [4, 5, 6]
# 向量加法
v_sum = [v1[i] + v2[i] for i in range(len(v1))]
print(v_sum) # [5, 7, 9]
# 向量减法
v_diff = [v1[i] - v2[i] for i in range(len(v1))]
print(v_diff) # [-3, -3, -3]
# 数乘
alpha = 2
v_scale = [alpha * v for v in v1]
print(v_scale) # [2, 4, 6]
使用元组也可以存储向量的每个分量,但由于元组是不可变的,因此不能进行修改操作。但可以通过元组解包的方式方便地进行向量的加减、数乘等运算。
v1 = (1, 2, 3)
v2 = (4, 5, 6)
# 向量加法
v_sum = tuple(v1[i] + v2[i] for i in range(len(v1)))
print(v_sum) # (5, 7, 9)
# 向量减法
v_diff = tuple(v1[i] - v2[i] for i in range(len(v1)))
print(v_diff) # (-3, -3, -3)
# 数乘
alpha = 2
v_scale = tuple(alpha * v for v in v1)
print(v_scale) # (2, 4, 6)
使用numpy数组可以方便地进行向量加减、数乘等运算,并且还支持向量点乘、叉乘等高级运算。numpy数组的向量运算速度也很快,适用于大规模数据处理。
import numpy as np
v1 = np.array([1, 2, 3])
v2 = np.array([4, 5, 6])
# 向量加法
v_sum = v1 + v2
print(v_sum) # [5 7 9]
# 向量减法
v_diff = v1 - v2
print(v_diff) # [-3 -3 -3]
# 数乘
alpha = 2
v_scale = alpha * v1
print(v_scale) # [2 4 6]
# 向量点乘
v_dot = np.dot(v1, v2)
print(v_dot) # 32
# 向量叉乘(必须为3维向量)
v_cross = np.cross(v1, v2)
print(v_cross) # [-3 6 -3]
使用pandas Series也可以存储向量的每个分量,但另外还可以通过Series提供的方法进行统计、筛选、排序等高级操作。pandas Series适用于表格数据分析,以及一些数据处理和可视化场景。
import pandas as pd
v1 = pd.Series([1, 2, 3])
v2 = pd.Series([4, 5, 6])
# 向量加法
v_sum = v1.add(v2, fill_value=0)
print(v_sum) # 0 5.0
# 1 7.0
# 2 9.0
# dtype: float64
# 向量减法
v_diff = v1.sub(v2, fill_value=0)
print(v_diff) # 0 -3.0
# 1 -3.0
# 2 -3.0
# dtype: float64
# 数乘
alpha = 2
v_scale = v1.mul(alpha)
print(v_scale) # 0 2
# 1 4
# 2 6
# dtype: int64