• NumPy与ndarray简介(转)


    http://blog.csdn.net/u014374284/article/details/45420645

    一、NumPy简介

    NumPy的全名为Numeric Python,是一个开源的Python科学计算库,它包括:

    • 一个强大的N维数组对象ndrray;
    • 比较成熟的(广播)函数库;
    • 用于整合C/C++和Fortran代码的工具包;
    • 实用的线性代数、傅里叶变换和随机数生成函数

    NumPy的优点:

    • 对于同样的数值计算任务,使用NumPy要比直接编写Python代码便捷得多;
    • NumPy中的数组的存储效率和输入输出性能均远远优于Python中等价的基本数据结构,且其能够提升的性能是与数组中的元素成比例的;
    • NumPy的大部分代码都是用C语言写的,其底层算法在设计时就有着优异的性能,这使得NumPy比纯Python代码高效得多

       当然,NumPy也有其不足之处,由于NumPy使用内存映射文件以达到最优的数据读写性能,而内存的大小限制了其对TB级大文件的处理;此外,NumPy数组的通用性不及Python提供的list容器。因此,在科学计算之外的领域,NumPy的优势也就不那么明显。

    二、数组ndarray

    NumPy最重要的一个特点就是其N维数组对象(即ndarray),该对象是一个快速而灵活的大数据集容器,该对象由两部分组成:

    • 实际的数据;
    • 描述这些数据的元数据;

    大部分的数组操作仅仅是修改元数据部分,而不改变其底层的实际数据。数组的维数称为秩,简单来说就是如果你需要获取数组中一个特定元素所需的坐标数,如a是一个2×3×4的矩阵,你索引其中的一个元素必须给定三个坐标a[x,y,z],故它的维数就是3。而轴可以理解为一种对数组空间的分割,以数组a为例,如果我们以0为轴,那么a可以看成是一个由两个元素构成的数组,其中每个元素都是一个3×4的数组。

    我们可以直接将数组看作一种新的数据类型,就像list、tuple、dict一样,但数组中所有元素的类型必须是一致的,Python支持的数据类型有整型、浮点型以及复数型,但这些类型不足以满足科学计算的需求,因此NumPy中添加了许多其他的数据类型,如bool、inti、int64、float32、complex64等。同时,它也有许多其特有的属性和方法。

    常用ndarray属性:

    • dtype        描述数组元素的类型
    • shape       以tuple表示的数组形状
    • ndim         数组的维度
    • size           数组中元素的个数
    • itemsize    数组中的元素在内存所占字节数
    • T               数组的转置
    • flat            返回一个数组的迭代器,对flat赋值将导致整个数组的元素被覆盖
    • real/imag  给出复数数组的实部/虚部
    • nbytes      数组占用的存储空间

    常用ndarray方法

      • reshape(…)                                 返回一个给定shape的数组的副本
      • resize(…)                                    返回给定shape的数组,原数组shape发生改变
      • flatten()/ravel()                            返回展平数组,原数组不改变
      • astype(dtype)                              返回指定元素类型的数组副本
      • fill()                                              将数组元素全部设定为一个标量值
      • sum/Prod()                                  计算所有数组元素的和/积
      • mean()/var()/std()                        返回数组元素的均值/方差/标准差
      • max()/min()/ptp()/median()          返回数组元素的最大值/最小值/取值范围/中位数
      • argmax()/argmin()                       返回最大值/最小值的索引
      • sort()                                           对数组进行排序,axis指定排序的轴;kind指定排序算法,默认是快速排序
      • view()/copy()                               view创造一个新的数组对象指向同一数据;copy是深复制
      • tolist()                                          将数组完全转为列表,注意与直接使用list(array)的区别
      • compress()                                  返回满足条件的元素构成的数组
  • 相关阅读:
    类似-Xms、-Xmn这些参数的含义:
    类似-Xms、-Xmn这些参数的含义:
    类似-Xms、-Xmn这些参数的含义:
    类似-Xms、-Xmn这些参数的含义:
    Java 虚拟机是如何判定两个 Java 类是相同的?
    Java 虚拟机是如何判定两个 Java 类是相同的?
    Java 虚拟机是如何判定两个 Java 类是相同的?
    Java 虚拟机是如何判定两个 Java 类是相同的?
    互联网支付系统整体架构详解
    DTO
  • 原文地址:https://www.cnblogs.com/quietwalk/p/8003862.html
Copyright © 2020-2023  润新知