一、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()                                  返回满足条件的元素构成的数组

NumPy与ndarray简介相关推荐

  1. Python的numpy库ndarray简介

    目录 前言 一.ndarray产生方法 1. np.array() 2.np.arrage() 3.np.linspace() 二.ndarray的属性 总结 前言 numpy库可以用来处理矩阵相关的 ...

  2. python3 多维数组 NumPy ndarray 简介

    目录 基础 重要属性 创建 Converting Python array_like Objects to NumPy Arrays 多维数组 一维 通用数学函数 基础 NumPy 的主要对象是齐次多 ...

  3. 列表list和numpy的ndarray的copy()函数

    在python里面,这两种数据结构只要都是赋值型的给另外一个,两者都是一模一样的保持改变,即一个变化另外一个也要变化. ndarray1=ndarray2 list1=list2 以list列表为例子 ...

  4. [转载] NumPy 基本操作(ndarray通用函数 / 常用函数)

    参考链接: Python中的numpy.cosh ndarray通用函数 / 常用函数 一.ufunc:numpy 模块中对 ndarray 中数据进行快速元素级运算的函数,也可以看做是简单的函数(接 ...

  5. 第2章【综合练习题】“大润发”、“沃尔玛”、“好德”和“农工商”四个超市都卖苹果、香蕉、橘子和芒果四种水果。使用NumPy的ndarray实现以下功能。

    P33综合练习题 1."大润发"."沃尔玛"."好德"和"农工商"四个超市都卖苹果.香蕉.橘子和芒果四种水果.使用Num ...

  6. 大数据清洗1(numpy之Ndarray对象)

    numpy之Ndarray对象 一.了解数据清洗 二.了解numpy库 1. 发展: 2. 安装: 3. 特性 三.NumPy-Ndarray对象 三.数组的属性 1.了解 2.数组的属性 四.Num ...

  7. 【Python】“大润发”、“沃尔玛”、“好德”和“农工商”四个超市都卖苹果、梨、香蕉、橘子和芒果五种水果。使用NumPy的ndarray实现以下功能。

    #(1)创建两个一维数组分别存储超市名称和水果名称 supermarket=np.array(['大润发','沃尔玛','好德','农工商']) fruit=np.array(['苹果','梨','香 ...

  8. python中ndarray是什么意思_什么是Numpy的ndarray

    首先,Numpy的核心是ndarray. 然后,ndarray本质是数组,其不同于一般的数组,或者Python 的list的地方在于它可以有N 维(dimentions),也可简单理解为数组里面嵌套数 ...

  9. Numpy中ndarray的常见操作

    NumPy(Numerical Python)是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要 ...

最新文章

  1. java加载图片到缓存_Android实现图片异步加载并缓存到本地
  2. 图神经网络如何对知识图谱建模? | 赠书
  3. Python的零基础超详细讲解(第一天)-Python简介以及下载
  4. 爱晚红枫的博客配色----绿野仙踪
  5. web测试点总结---UI、兼容、功能、交互、安全、性能、接口测试
  6. 作用域、执行环境、作用域链
  7. InnoDB的行锁和表锁
  8. vue给组件传递不同的值
  9. 【Redis】有序集合的交集与并集
  10. FBI树-数据结构(二叉树)
  11. 计算机达人成长之路(8)连载
  12. mysql数据 lt =_MySql之数据操作
  13. 跨部门的bug的沟通
  14. php扩展leonis,LNMP环境部署
  15. 计算机表格折线图添加图例,如何将Excel表格中插入的折线图中的圆圈设置为方块或三角形...
  16. java math 三角函数_Java Math类的常用方法,三角函数运算
  17. 将照片转换为网站的Flash
  18. 我爱淘冲刺阶段站立会议2每天任务6
  19. 使用@Vaild或@Validated正则校验以及常用正则
  20. 计算机网络谢希仁(1)

热门文章

  1. [附源码]计算机毕业设计JAVA小说网站的设计与实现1
  2. c--scanf()函数详解
  3. TensorFlow-神经网络初体验
  4. wayland学习一 ——client connect到wayland server
  5. DP方法(动态规划) 寻找最长公共子序列 LCS问题(c++)
  6. D3D12常用术语与函数
  7. 打印机十大共性故障解决方案(转东转西)
  8. print()和println()的区别
  9. 【WLAN】Android 13 p2p / wifi direct介绍
  10. Malloc源码解读三——Bins与Arena