← 返回首页
🤖

NumPy基础教程

📂 ai ⏱ 2 min 366 words

NumPy基础教程

NumPy是Python科学计算的基础库,提供高效的多维数组对象和丰富的数学函数。

数组创建

import numpy as np

# 从列表创建
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([[1, 2, 3], [4, 5, 6]])

print("数组创建:")
print(f"一维数组: {arr1}")
print(f"二维数组:\n{arr2}")
print(f"形状: {arr2.shape}")
print(f"数据类型: {arr2.dtype}")

特殊数组

# 特殊数组创建
zeros = np.zeros((3, 4))
ones = np.ones((2, 3))
eye = np.eye(3)
diag = np.diag([1, 2, 3])

print("特殊数组:")
print(f"零数组:\n{zeros}")
print(f"全1数组:\n{ones}")
print(f"单位矩阵:\n{eye}")
print(f"对角矩阵:\n{diag}")

数组索引

arr = np.array([[1, 2, 3, 4],
                [5, 6, 7, 8],
                [9, 10, 11, 12]])

print("数组索引:")
print(f"单个元素: {arr[0, 1]}")
print(f"一行: {arr[0]}")
print(f"一列: {arr[:, 1]}")
print(f"子数组:\n{arr[0:2, 1:3]}")

# 布尔索引
mask = arr > 5
print(f"大于5的元素: {arr[mask]}")

数组运算

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])

print("数组运算:")
print(f"加法:\n{a + b}")
print(f"乘法:\n{a * b}")
print(f"矩阵乘法:\n{np.dot(a, b)}")
print(f"转置:\n{a.T}")
print(f"求和: {a.sum()}")
print(f"均值: {a.mean()}")
print(f"标准差: {a.std()}")

广播机制

# 广播
arr = np.array([[1, 2, 3], [4, 5, 6]])
scalar = 10

print("广播机制:")
print(f"数组 + 标量:\n{arr + scalar}")

row = np.array([1, 2, 3])
print(f"数组 + 行向量:\n{arr + row}")

col = np.array([[10], [20]])
print(f"数组 + 列向量:\n{arr + col}")

线性代数

A = np.array([[1, 2], [3, 4]])
b = np.array([5, 6])

print("线性代数:")
print(f"行列式: {np.linalg.det(A)}")
print(f"逆矩阵:\n{np.linalg.inv(A)}")
print(f"特征值: {np.linalg.eigvals(A)}")

# 解线性方程组
x = np.linalg.solve(A, b)
print(f"方程组解: {x}")
print(f"验证: {np.dot(A, x)}")

数组形状操作

arr = np.arange(12)
print("形状操作:")
print(f"原始数组: {arr}")

# 重塑
arr_reshaped = arr.reshape(3, 4)
print(f"重塑为3x4:\n{arr_reshaped}")

# 展平
arr_flat = arr_reshaped.flatten()
print(f"展平: {arr_flat}")

# 转置
arr_transposed = arr_reshaped.T
print(f"转置:\n{arr_transposed}")

常用函数

arr = np.array([3, 1, 4, 1, 5, 9, 2, 6])

print("常用函数:")
print(f"排序: {np.sort(arr)}")
print(f"唯一值: {np.unique(arr)}")
print(f"最大值: {np.max(arr)}")
print(f"最小值: {np.min(arr)}")
print(f"索引: {np.argmax(arr)}")

# 三角函数
angles = np.array([0, np.pi/4, np.pi/2, np.pi])
print(f"\n三角函数:")
print(f"正弦: {np.sin(angles).round(3)}")
print(f"余弦: {np.cos(angles).round(3)}")

# 指数和对数
x = np.array([1, 2, 3, 4])
print(f"\n指数和对数:")
print(f"e^x: {np.exp(x).round(3)}")
print(f"ln(x): {np.log(x).round(3)}")

随机数生成

np.random.seed(42)

print("随机数生成:")
print(f"均匀分布: {np.random.uniform(0, 1, 5).round(3)}")
print(f"正态分布: {np.random.normal(0, 1, 5).round(3)}")
print(f"随机整数: {np.random.randint(0, 10, 5)}")
print(f"随机排列: {np.random.permutation([1, 2, 3, 4, 5])}")

# 生成随机矩阵
random_matrix = np.random.randn(3, 3)
print(f"\n随机矩阵:\n{random_matrix.round(3)}")

实际应用示例

# 计算欧氏距离
point1 = np.array([1, 2, 3])
point2 = np.array([4, 5, 6])
distance = np.sqrt(np.sum((point1 - point2)**2))
print(f"欧氏距离: {distance:.4f}")

# 向量点积
v1 = np.array([1, 2, 3])
v2 = np.array([4, 5, 6])
dot_product = np.dot(v1, v2)
print(f"点积: {dot_product}")

# 矩阵特征分解
A = np.array([[4, 2], [1, 3]])
eigenvalues, eigenvectors = np.linalg.eig(A)
print(f"特征值: {eigenvalues}")
print(f"特征向量:\n{eigenvectors}")

总结

功能 函数/方法 说明
创建 array, zeros, ones 数组初始化
索引 [], : 访问元素
运算 +, -, *, dot 数学运算
形状 reshape, T 数组变形
线性代数 linalg 矩阵运算
随机数 random 生成随机数据

NumPy是Python数据科学的基石,掌握其核心功能对机器学习至关重要。