当前位置: 首页 > backend >正文

numpy的详细知识点,简单易懂

numpy的核心概念

NumPy(Numerical Python)是Python中用于科学计算的基础库,提供高效的多维数组对象ndarray及大量数学函数。其核心设计围绕数组操作、广播机制和向量化计算展开。

数组创建与属性

  • 基本创建
    import numpy as np
    arr = np.array([1, 2, 3])  # 一维数组
    arr_2d = np.array([[1, 2], [3, 4]])  # 二维数组
    

  • 特殊数组
    np.zeros((2, 3))  # 全0数组
    np.ones((2, 2))   # 全1数组
    np.arange(0, 10, 2)  # 类似range的序列
    np.linspace(0, 1, 5)  # 等间隔数组
    

  • 数组属性
    shape(维度)、dtype(数据类型)、size(元素总数)、ndim(轴数)。

数组操作

  • 索引与切片
    arr = np.array([[1, 2, 3], [4, 5, 6]])
    arr[1, 2]  # 输出6(第二行第三列)
    arr[:, 1:3]  # 所有行的第2到3列
    

  • 变形与合并
    arr.reshape(3, 2)  # 改变形状
    np.concatenate([arr1, arr2], axis=0)  # 沿行合并
    np.vstack((arr1, arr2))  # 垂直堆叠
    

广播机制

NumPy允许不同形状的数组进行算术运算,通过广播自动扩展较小数组的维度:

a = np.array([1, 2, 3])
b = 2
a * b  # 广播结果:[2, 4, 6]

数学与统计函数

  • 通用函数(ufunc)
    np.sin(), np.exp(), np.sqrt()等逐元素操作。
  • 聚合函数
    np.sum(), np.mean(), np.max()支持沿轴计算:
    arr.sum(axis=0)  # 每列求和
    

线性代数

numpy.linalg模块提供矩阵运算:

np.dot(A, B)  # 矩阵乘法
np.linalg.inv(A)  # 矩阵求逆
np.linalg.eig(A)  # 特征值与特征向量

随机数生成

np.random模块生成伪随机数:

np.random.rand(3, 2)  # 均匀分布
np.random.normal(0, 1, 10)  # 正态分布
np.random.randint(0, 10, 5)  # 随机整数

性能优化

  • 向量化:避免循环,使用内置函数。
  • 内存布局arr.flags查看连续性,np.ascontiguousarray()优化。
  • 预分配内存:提前创建数组避免频繁扩容。

实际应用示例

  • 图像处理:RGB图像表示为三维数组(高度×宽度×通道)。
  • 时间序列分析:滑动窗口计算均值或标准差。

通过掌握这些知识点,可以高效处理数值计算任务,并为深度学习框架(如TensorFlow/PyTorch)奠定基础。

http://www.xdnf.cn/news/15996.html

相关文章:

  • Redis持久化-AOF
  • Oracle数据恢复—Oracle数据库所在分区被删除后报错的数据恢复案例
  • Spring Boot 使用Jasypt加密
  • 【bug】ubuntu20.04 orin nx Temporary failure resolving ‘ports.ubuntu.com‘
  • Debug 与 Release 版本构建详解
  • Unity里的加力
  • 0722 数据结构顺序表
  • Linux系统权限全面解析:掌握你的数字王国钥匙
  • docker pull 用法
  • PHP获取淘宝拍立淘(以图搜图)API接口操作详解
  • CSS+JavaScript 禁用浏览器复制功能的几种方法
  • 【前端】ikun-pptx编辑器前瞻问题二: pptx的压缩包结构,以及xml正文树及对应元素介绍
  • SSL VPN技术
  • 基于 KeepAlived + HAProxy 搭建 RabbitMQ 高可用负载均衡集群
  • 傲软录屏 专业高清录屏软件 ApowerREC Pro 下载与保姆级安装教程!!
  • v0+claude+cursor构建初始脚手架
  • 嵌入式学习-土堆目标检测(2)-day26
  • MySQL中的多表查询和笛卡尔积问题
  • vscode,cursor,Trae终端不能使用cnpm、npm、pnpm命令解决方案
  • n1 armbian docker compose 部署aipan mysql
  • HTML结构解析
  • 防抖的实战例子 - 常用语echarts图中点击事件的例子
  • 拥抱区块链红利:机遇无限,风险暗涌
  • Clickhouse源码分析-副本数据同步
  • gpt面试题
  • SQL通用增删改查
  • 如何使用电脑连接小米耳机(红米 redmi耳机)
  • 学习秒杀系统-异步下单(包含RabbitMQ基础知识)
  • RS485和Modbus
  • 全新开发范式:uni-app X助力全平台原生应用