目录
1. 数据类型
2. 数组
创建数组
数组属性
3. 索引和切片
4. 数组操作
形状操作
数组拼接
数组分割
5. 数学和逻辑函数
数学运算
三角函数
逻辑运算
6. 排序、搜索和计数
排序
搜索
计数
7. 集合操作
8. 输入输出
文件操作
9. 随机抽样
随机数生成
随机分布
10. 统计相关
基本统计
直方图
11. 线性代数
矩阵运算
12. 大作业示例
图像处理应用
金融数据分析
总结
1. 数据类型
NumPy 提供了比 Python 更丰富的数据类型,主要类型包括:
- 整数类型:
int8
,int16
,int32
,int64
- 无符号整数:
uint8
,uint16
,uint32
,uint64
- 浮点数:
float16
,float32
,float64
- 复数:
complex64
,complex128
- 布尔型:
bool_
- 字符串:
string_
- Unicode:
unicode_
创建数据类型:
python
复制
dt = np.dtype('i4') # 32位有符号整数
2. 数组
创建数组
python
复制
np.array([1,2,3]) # 从列表创建 np.zeros((3,4)) # 全0数组 np.ones((2,3,4)) # 全1数组 np.empty((2,3)) # 未初始化数组 np.arange(10) # 类似range的数组 np.linspace(0,1,5) # 线性间隔数组
数组属性
python
复制
arr.shape # 数组形状 arr.ndim # 数组维度 arr.size # 数组元素总数 arr.dtype # 数组元素类型
3. 索引和切片
基本索引:
python
复制
arr[5] # 一维数组索引 arr[2,5] # 二维数组索引 arr[1:3, 4:6] # 二维数组切片
高级索引:
python
复制
arr[[0,1,2]] # 整数数组索引 arr[arr>0.5] # 布尔数组索引
4. 数组操作
形状操作
python
复制
arr.reshape((3,4)) # 改变形状 arr.flatten() # 展平为一维 arr.T # 转置
数组拼接
python
复制
np.concatenate((a,b), axis=0) np.stack((a,b), axis=1) np.hstack((a,b)) # 水平堆叠 np.vstack((a,b)) # 垂直堆叠
数组分割
python
复制
np.split(arr, 3) # 均等分割 np.array_split(arr, 3) # 不等分割 np.hsplit(arr, 3) # 水平分割 np.vsplit(arr, 3) # 垂直分割
5. 数学和逻辑函数
数学运算
python
复制
np.add(x, y) # 加法 np.subtract(x, y) # 减法 np.multiply(x, y) # 乘法 np.divide(x, y) # 除法 np.power(x, y) # 幂运算 np.sqrt(x) # 平方根
三角函数
python
复制
np.sin(x) np.cos(x) np.tan(x)
逻辑运算
python
复制
np.logical_and(x, y) np.logical_or(x, y) np.logical_not(x)
6. 排序、搜索和计数
排序
python
复制
np.sort(arr) # 返回排序后的数组 arr.sort() # 原地排序 np.argsort(arr) # 返回排序索引
搜索
python
复制
np.where(arr > 0.5) # 返回满足条件的索引 np.argmax(arr) # 返回最大值索引 np.argmin(arr) # 返回最小值索引
计数
python
复制
np.count_nonzero(arr > 0.5) # 统计满足条件的元素数 np.unique(arr) # 返回唯一值
7. 集合操作
python
复制
np.intersect1d(x, y) # 交集 np.union1d(x, y) # 并集 np.setdiff1d(x, y) # 差集 np.in1d(x, y) # 包含测试
8. 输入输出
文件操作
python
复制
np.save('array.npy', arr) # 保存为.npy文件 np.load('array.npy') # 加载.npy文件 np.savetxt('array.txt', arr) # 保存为文本文件 np.loadtxt('array.txt') # 从文本文件加载
9. 随机抽样
随机数生成
python
复制
np.random.rand(3,4) # [0,1)均匀分布 np.random.randn(3,4) # 标准正态分布 np.random.randint(0,10) # 随机整数
随机分布
python
复制
np.random.normal(0,1,100) # 正态分布 np.random.uniform(0,1,100) # 均匀分布 np.random.poisson(5,100) # 泊松分布
10. 统计相关
基本统计
python
复制
np.mean(arr) # 平均值 np.median(arr) # 中位数 np.std(arr) # 标准差 np.var(arr) # 方差 np.corrcoef(x,y) # 相关系数
直方图
python
复制
np.histogram(arr, bins=10) # 计算直方图
11. 线性代数
矩阵运算
python
复制
np.dot(a, b) # 矩阵乘法 np.linalg.inv(a) # 矩阵求逆 np.linalg.det(a) # 行列式 np.linalg.eig(a) # 特征值和特征向量 np.linalg.solve(a, b) # 解线性方程组
12. 大作业示例
图像处理应用
python
复制
# 加载图像为数组 from PIL import Image img = np.array(Image.open('image.jpg')) # 灰度转换 gray = np.dot(img[...,:3], [0.299, 0.587, 0.114]) # 边缘检测 kernel = np.array([[-1,-1,-1], [-1,8,-1], [-1,-1,-1]]) edges = np.abs(np.convolve(gray, kernel, mode='same')) # 保存处理后的图像 Image.fromarray(edges).save('edges.jpg')
金融数据分析
python
复制
# 计算移动平均 def moving_average(x, window_size): return np.convolve(x, np.ones(window_size)/window_size, mode='valid') # 计算收益率 returns = np.diff(prices) / prices[:-1] # 计算波动率 volatility = np.std(returns) * np.sqrt(252) # 年化波动率
总结
NumPy 是 Python 科学计算的基础库,提供了高效的多维数组对象和丰富的数学函数。掌握 NumPy 的核心功能对于数据科学、机器学习和科学计算至关重要。本笔记涵盖了 NumPy 的主要功能模块,可以作为学习和参考的指南。