📜  python中的向量(1)

📅  最后修改于: 2023-12-03 15:19:28.406000             🧑  作者: Mango

Python中的向量

在Python中表示向量的方法有很多,可以使用列表、元组、numpy数组、pandas Series等数据结构来存储。

1. 列表

使用列表存储向量的每个分量,可以很方便地进行向量的加减、数乘等运算。

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]
2. 元组

使用元组也可以存储向量的每个分量,但由于元组是不可变的,因此不能进行修改操作。但可以通过元组解包的方式方便地进行向量的加减、数乘等运算。

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)
3. numpy数组

使用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]
4. pandas Series

使用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