Bootstrap

【人工智能】Python常用库-NumPy常用方法教程

NumPy(Numerical Python)是 Python 科学计算的基础库,提供高效的数组操作功能。下面是 NumPy 常用方法的详细说明及示例,帮助你快速掌握这项技能。


1. 安装和导入 NumPy

安装 NumPy:
pip install numpy
导入 NumPy:
import numpy as np

2. 数组创建方法

1D 数组
array = np.array([1, 2, 3, 4])
print(array)  # 输出: [1 2 3 4]
多维数组
array_2d = np.array([[1, 2], [3, 4]])
print(array_2d)
# 输出:
# [[1 2]
#  [3 4]]
特殊数组
# 全零数组
zeros = np.zeros((2, 3))
print(zeros)
# 输出:
# [[0. 0. 0.]
#  [0. 0. 0.]]

# 全一数组
ones = np.ones((3, 2))
print(ones)
# 输出:
# [[1. 1.]
#  [1. 1.]
#  [1. 1.]]

# 单位矩阵
identity = np.eye(3)
print(identity)
# 输出:
# [[1. 0. 0.]
#  [0. 1. 0.]
#  [0. 0. 1.]]

# 随机数组
random_array = np.random.random((2, 2))
print(random_array)
# 输出:
# [[0.86350558 0.21282662]
#  [0.54667975 0.58941621]]
等差数组
# 从 0 到 10,步长为 2
arange_array = np.arange(0, 10, 2)
print(arange_array)
# 输出: [0 2 4 6 8]

# 从 0 到 1,分成 5 段
linspace_array = np.linspace(0, 1, 5)
print(linspace_array)
# 输出: [0.  0.25 0.5  0.75 1.  ]

3. 数组属性和操作

数组属性
array = np.array([[1, 2, 3], [4, 5, 6]])

print("维度:", array.ndim)        # 输出: 2
print("形状:", array.shape)      # 输出: (2, 3)
print("元素个数:", array.size)   # 输出: 6
print("数据类型:", array.dtype)  # 输出: int32 或 int64
数组变形
reshaped = array.reshape((3, 2))
print(reshaped)
# 输出:
# [[1 2]
#  [3 4]
#  [5 6]]
数组转置
transposed = array.T
print(transposed)
# 输出:
# [[1 4]
#  [2 5]
#  [3 6]]

4. 基本运算

元素运算
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

print("加法:", a + b)  # [5 7 9]
print("乘法:", a * b)  # [4 10 18]
print("指数:", np.exp(a))  # [ 2.71828183  7.3890561  20.08553692]
矩阵运算
a = np.array([[1, 2], [3, 4]])
b = np.array([[2, 0], [1, 3]])

# 点积
dot_product = np.dot(a, b)
print(dot_product)
# 输出:
# [[ 4 4]
#  [10 12]]

# 矩阵乘法
matrix_mult = a @ b
print(matrix_mult)
# 输出:
# [[ 4 4]
#  [10 12]]
统计运算
array = np.array([[1, 2, 3], [4, 5, 6]])

print("总和:", np.sum(array))          # 21
print("均值:", np.mean(array))        # 3.5
print("最大值:", np.max(array))       # 6
print("最小值:", np.min(array))       # 1
print("按列求和:", np.sum(array, axis=0))  # [5 7 9]

5. 数组索引与切片

基础索引
array = np.array([10, 20, 30, 40])

print(array[1])  # 20
print(array[-1])  # 40
切片操作
array = np.array([10, 20, 30, 40])

print(array[1:3])  # [20 30]
print(array[:2])   # [10 20]
布尔索引
array = np.array([1, 2, 3, 4, 5])

# 筛选大于2的元素
print(array[array > 2])  # [3 4 5]
花式索引
array = np.array([10, 20, 30, 40, 50])

print(array[[0, 2, 4]])  # [10 30 50]

6. 广播机制

广播机制让数组形状不同但兼容的情况下完成运算。

a = np.array([1, 2, 3])
b = np.array([[1], [2], [3]])

result = a + b
print(result)
# 输出:
# [[2 3 4]
#  [3 4 5]
#  [4 5 6]]

7. 实用功能

随机数生成
np.random.seed(42)  # 设置随机种子
random_numbers = np.random.rand(3)  # 生成 3 个随机数
print(random_numbers)
# 输出: [0.12345678 0.98765432 0.54321098]
排序
array = np.array([3, 1, 4, 1, 5])
sorted_array = np.sort(array)
print(sorted_array)  # [1 1 3 4 5]
重复与拼接
a = np.array([1, 2, 3])

# 重复
repeated = np.tile(a, (2, 3))
print(repeated)
# 输出:
# [[1 2 3 1 2 3 1 2 3]
#  [1 2 3 1 2 3 1 2 3]]

# 拼接
b = np.array([4, 5, 6])
concatenated = np.concatenate((a, b))
print(concatenated)
# 输出: [1 2 3 4 5 6]

8. 实战案例:简单的线性回归

# 导入库
import numpy as np
from sklearn.linear_model import LinearRegression

# 数据
X = np.array([[1], [2], [3]])
y = np.array([2, 4, 6])

# 模型训练
model = LinearRegression()
model.fit(X, y)

# 预测
predicted = model.predict(np.array([[4]]))
print("预测值:", predicted[0])  # 预测值: 7.999999999999998

总结

NumPy 提供了高效、灵活的数组操作功能,无论是数据预处理、数学运算,还是构建机器学习模型,都是一个不可或缺的工具。希望通过本教程,你能熟练掌握 NumPy 的常用方法,进而为复杂数据分析任务打下基础。

;