• 01 NumPy介绍


    什么是NumPy(Numerical Python)

            NumPy是Python中科学计算的基础包,它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等。NumPy完全支持面向对象的方法。

            NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。

            NumPy的历史可以追溯到90年代中期,它的前身为Numeric(用C语言编写,主要用来调取C++中应用)和Numarray(用于处理高维数组,可灵活的索引、数据类型变换、广播等),2005年出现的NumPy作为继承者,吸取了Numeric中丰富的C API及Numarray的高维数组处理能力,成为Python科学计算生态系统的基础

            NumPy包的核心是 ndarray 对象。它封装了python原生的同数据类型的 n 维数组,为了保证其性能优良,其中有许多操作都是代码在本地进行编译后执行的。

            NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:

    • 一个强大的N维数组对象 ndarray
    • 广播功能函数
    • 整合 C/C++/Fortran 代码的工具
    • 线性代数、傅里叶变换、随机数生成等功能

    为什么NumPy这么快

    1,底层是C,部分是Fortran

    2,除了用C以外,numpy有自己的一个指令集合。可以提升运行速度。

    3,在R里有一个东西叫向量化编程。速度是直接用内嵌数据结构的100倍左右。

            矢量化描述了代码中没有任何显式的循环,索引等。这些是预编译的C代码中“幕后”优化的结果。如果没有矢量化,我们的代码就会被低效且难以阅读的for循环所困扰。矢量化代码有许多优点,其中包括:

    • 矢量化代码更简洁,更易于阅读
    • 更少的代码行通常意味着更少的错误
    • 代码更接近于标准的数学符号(通常,更容易正确编码数学结构)
    • 矢量化导致产生更多 “Pythonic” 代码。

            一般来说,在NumPy中,所有操作,不仅仅是算术运算,而是逻辑,位,功能等,都以这种隐式的逐元素方式表现,即它们进行广播。 

  • 相关阅读:
    [python] 离线安装包-实践记录
    Vue的MVVM模型
    【RabbitMQ】常用消息模型详解
    SpringBoot3 配置Logback日志滚动文件
    【Method】把 arXiv论文 转换为 HTML5 网页
    CF1648B Integral Array
    网络安全就业形势怎么样?
    代码随想录训练营day46, 单词拆分和多重背包
    工欲善其事,必先利其器-使用vscode搭建go语言开发环境
    c++11 map自定义key
  • 原文地址:https://blog.csdn.net/c_lanxiaofang/article/details/125547886