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

科学计算库:Numpy

1. Numpy概述

  1. 核心特点

    • 提供高性能多维数组对象 ndarray,支持向量化运算。

    • 底层用C实现,避免Python循环的性能瓶颈。

    • 集成数学函数、线性代数、随机数生成等工具。

  2. 应用场景

    科学计算、数据分析、机器学习等。

2. Array数组

  1. 定义数组

    import numpy as np  
    arr = np.array([1, 2, 3])          # 一维数组  
    matrix = np.array([[1, 2], [3, 4]]) # 二维数组  
  2. 数组属性

    • arr.shape:形状(如 (3,) 或 (2, 2))。

    • arr.dtype:数据类型(如 int32float64)。

    • arr.ndim:维度数(如 1 或 2)。


3. 数组结构

  1. 多维数组操作

    三维数组示例:np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
  2. 内存特性

    连续内存存储,支持快速访问。

4. 数组类型

  1. 指定类型

    arr = np.array([1, 2, 3], dtype=np.float32)  # 强制为浮点数  
  2. 常见类型

    • 整型:int8int32

    • 浮点型:float16float64

    • 布尔:bool,字符串:string_


5. 数值运算

  1. 向量化运算

    arr = np.array([1, 2, 3])  
    arr + 2      # [3, 4, 5](逐元素加法)  
    arr * arr     # [1, 4, 9](逐元素乘法)  
  2. 通用函数(ufunc)

    • np.sqrt(arr)(平方根)

    • np.exp(arr)(指数)


6. 排序操作

  1. 排序方法

    arr = np.array([3, 1, 2])  
    arr.sort()            # 原地排序 → [1, 2, 3]  
  2. 多维排序

    np.sort(arr, axis=0)  # 按列排序  

7. 数组形状操作

  1. 改变形状

    arr = np.arange(6).reshape(2, 3)  # [[0, 1, 2], [3, 4, 5]]  
  2. 拼接与展开

    • np.concatenate([arr1, arr2], axis=0):沿行拼接。

    • arr.flatten():展平为一维数组。


8. 数组生成函数

  1. 常用方法

    np.zeros((2, 3))       # 全0数组  
    np.ones((3, 2))        # 全1数组  
    np.arange(0, 10, 2)    # [0, 2, 4, 6, 8]  

9. 常用生成函数

      特殊数组

np.random.rand(2, 3)   # 均匀分布随机数组  
np.eye(3)              # 3x3单位矩阵  

10. 四则运算

  1. 逐元素运算

    a = np.array([1, 2])  
    b = np.array([3, 4])  
    a + b   # [4, 6]  
    a * b   # [3, 8]  

  2. 矩阵乘法

    a @ b.T   # 矩阵乘法(等价于 `np.dot(a, b.T)`)  

11. 随机模块

    随机数生成

np.random.seed(42)             # 固定随机种子  
np.random.randint(0, 10, 5)    # 5个0~9的整数  
np.random.normal(0, 1, 10)     # 正态分布随机数  

12. 文件读写

     文本文件

data = np.loadtxt("data.txt")    # 读取文本  
np.savetxt("output.txt", data)   # 保存文本  

13. 数组保存

  1. 二进制存储

    np.save("data.npy", arr)         # 保存为.npy文件  
    loaded_arr = np.load("data.npy") # 加载数组  
  2. 多数组存储

    np.savez("data.npz", arr1=arr1, arr2=arr2)  # 保存多个数组  

总结

  1. 高效数组操作ndarray 的向量化运算和内存优化。

  2. 灵活生成与变换:通过函数快速生成数组,支持形状调整、排序、拼接。

  3. 文件与随机数据:读写文本/二进制文件,生成可控随机数。

  4. 数学运算加速:避免Python原生循环,利用内置函数提升性能。


http://www.kler.cn/a/596484.html

相关文章:

  • 3389远程桌面爆破
  • 破解内存瓶颈:如何通过内存池优化资源利用
  • Cannon.js 物理引擎入门(Three.js 结合 Cannon.js)
  • Android10 系统截屏功能异常的处理
  • python每日十题(5)
  • HTML超链接
  • 网络层之IP协议
  • 网络HTTPS协议
  • 从碎片化到标准化:案例详解 MCP 如何重塑 AI Agent 开发生态?
  • WEBUI插件和UE5通讯
  • 爬虫——playwright获取亚马逊数据
  • 2025年3月AI搜索发展动态与趋势分析:从技术革新到生态重构
  • 清洁机器人垃圾物识别与智能分类回收系统研究(大纲)
  • 【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的 RESTful API 设计:从上手到骨折
  • MyBatis 中 #{} 和 ${} 的区别详解
  • [思考记录]两则:宏观视角、理想化
  • 高等数学-第七版-上册 选做记录 习题5-2
  • 手机怎么换网络IP有什么用?操作指南与场景应用‌
  • MySQL高频八股——索引
  • Cables Finance 即将发布新的积分奖励计划及代币空投