python numpy模块详解
2024年7月3日大约 2 分钟约 584 字
numpy模块概述
安装numpy模块:pip install numpy
- 主要数据结构是ndarray,即多维数组,但要求单个数组内所有数据是同质的,即类型必须相同。
- numpy的数据结构仅支持数字索引。
- 提供了基本的数组操作、线性代数、傅里叶变换和随机数生成等功能。
- 底层实现为C语言,具有极高的性能,尤其在处理大规模数组和矩阵运算时表现优越。
- 适用于数值计算和大规模同质数据处理。
- 数组与列表的区别:数组是一种特殊变量,虽与列表相似,但列表可以存储任意类型的数据,数组只能存储一种类型的数据,同时,数组提供了许多方便统计计算的功能(如平均值mean、标准差std等)。
基本使用
多维数组对象 (ndarray)
import numpy as np
a = np.array([1, 2, 3])
b = np.array([[1, 2, 3], [4, 5, 6]])
print(a.shape) # 输出: (3,)
print(b.dtype) # 输出: int64
print(b.size) # 输出: 6
# 数组切片和索引:
c = np.array([1, 2, 3, 4, 5])
print(c[1:3]) # 输出: [2 3]
print(c[:3]) # 输出: [1 2 3]
# 形状变换
d = np.array([[1, 2], [3, 4], [5, 6]])
print(d.reshape(2, 3)) # 输出: [[1 2 3]
# 数学函数
e = np.array([1, 2, 3])
print(e + 1) # 输出: [2 3 4]
print(e * 2) # 输出: [2 4 6]
# 统计函数
f = np.array([1, 2, 3, 4, 5])
print(np.mean(f)) # 输出: 3.0
print(np.std(f)) # 输出: 1.4142135623730951
# 线性代数 矩阵运算
g = np.array([[1, 2], [3, 4]])
h = np.array([[5, 6], [7, 8]])
print(np.dot(g, h)) # 矩阵乘法
# 线性代数 矩阵分解
i = np.array([[1, 2], [3, 4]])
print(np.linalg.inv(i)) # 矩阵求逆
print(np.linalg.eig(i)) # 特征值和特征向量
# 随机数生成
print(np.random.rand(3, 2)) # 生成3x2的随机数组
print(np.random.randint(0, 10, size=(3, 3))) # 生成3x3的随机整数数组
# 广播机制
j = np.array([1, 2, 3])
k = np.array([[1], [2], [3]])
print(j + k) # 输出: [[2 3 4]
# 高级索引和切片
# 布尔索引
l = np.array([1, 2, 3, 4, 5])
print(l[l > 2]) # 输出: [3 4 5]
# 花式索引
m = np.array([1, 2, 3, 4, 5])
indices = [0, 2, 4]
print(m[indices]) # 输出: [1 3 5]
# 文件读写
n = np.array([1, 2, 3])
np.save('array.npy', n) # 保存为.npy文件
o = np.load('array.npy') # 加载.npy文件
print(o) # 输出: [1 2 3]