Numpy的介绍和优势


1 Numpy介绍

Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组

Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。

Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。

2 ndarray介绍

NumPy provides an N-dimensional array type, the ndarray,
which describes a collection of “items” of the same type.

NumPy提供了一个N维数组类型ndarray,它描述了相同类型的“items”的集合。

用ndarray进行存储:

import numpy as np# 创建ndarray
score = np.array(
[[80, 89, 86, 67, 79],
[78, 97, 89, 67, 81],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69],
[76, 87, 75, 67, 86],
[70, 79, 84, 67, 84],
[94, 92, 93, 67, 64],
[86, 85, 83, 67, 80]])score

返回结果:

提问:

使用Python列表可以存储一维数组,通过列表的嵌套可以实现多维数组,那么为什么还需要使用Numpy的ndarray呢?

3 ndarray与Python原生list运算效率对比

在这里我们通过一段代码运行来体会到ndarray的好处  【下方代码不能在pycharm中运行】

import random
import time
import numpy as np
a = []
for i in range(100000000):a.append(random.random())# 通过%time魔法方法, 查看当前行的代码运行一次所花费的时间
%time sum1=sum(a)b=np.array(a)%time sum2=np.sum(b)

运行效果:

从中我们看到ndarray的计算速度要快很多,节约了时间。

机器学习的最大特点就是大量的数据运算,那么如果没有一个快速的解决方案,那可能现在python也在机器学习领域达不到好的效果。

Numpy专门针对ndarray的操作和运算进行了设计,所以数组的存储效率和输入输出性能远优于Python中的嵌套列表,数组越大,Numpy的优势就越明显。

思考:

ndarray为什么可以这么快?

4 ndarray的优势

4.1 内存块风格   【一体式存储】

ndarray到底跟原生python列表有什么不同呢,请看一张图:

【除了可以存数字,还可以存放字符串】

从图中我们可以看出ndarray在存储数据的时候,数据与数据的地址都是连续的,这样就给使得批量操作数组元素时速度更快。

这是因为ndarray中的所有元素的类型都是相同的,而Python列表中的元素类型是任意的,所以ndarray在存储元素时内存可以连续,而python原生list就只能通过寻址方式找到下一个元素,这虽然也导致了在通用性能方面Numpy的ndarray不及Python原生list,但在科学计算中,Numpy的ndarray就可以省掉很多循环语句,代码使用方面比Python原生list简单的多。

4.2 ndarray支持并行化运算(向量化运算)

numpy内置了并行运算功能,当系统有多个核心时,做某种计算时,numpy会自动做并行计算

4.3 效率远高于纯Python代码

Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,所以,其效率远高于纯Python代码。

5 小结

  • numpy介绍

    • 一个开源的Python科学计算库
    • 计算起来要比python简洁高效
    • Numpy使用ndarray对象来处理多维数组
  • ndarray介绍
    • NumPy提供了一个N维数组类型ndarray,它描述了相同类型的“items”的集合。
    • 生成numpy对象:np.array()
  • ndarray的优势
    • 内存块风格

      • list -- 分离式存储,存储内容多样化
      • ndarray -- 一体式存储,存储类型必须一样
    • ndarray支持并行化运算(向量化运算)
    • ndarray底层是用C语言写的,效率更高,释放了GIL

Numpy的介绍和优势相关推荐

  1. php 多态有什么用,php面向对象多态的介绍与优势

    /* 1.多态的介绍与优势 (1)多态的意思是"多种形态" (2)多态根据对象类型不同来以不同方式处理 (3)多太的优势:面向对象不仅仅是把类继承起来,还能通过多太方式,来根据对象 ...

  2. 1、numpy库介绍

    Numpy库介绍 NumPy是一个功能强大的Python库,主要用于对多维数组执行计算.NumPy这个词来源于两个单词-- Numerical和Python.NumPy提供了大量的库函数和操作,可以帮 ...

  3. python科学计算是什么意思_Python科学计算和数据分析(NumPy详细介绍)

    本文介绍的科学计算.数据分析必备基础知识. 本文全文约2600字,阅读时间约15分钟,请你耐心观看. 本文使用的开发环境是Python3.8,Numpy版本是1.19,本文的例子全部经过验证,你可以直 ...

  4. 为什么要学习微信小程序直播开发?最新的小程序直播介绍和优势分析!

    小程序直播的介绍 "小程序直播"是微信提供给开发者的实时视频直播工具,包括直播管理端.主播端和观众端等模块,支持提供常用的用户互动和营销促销工具. 开发者只需在小程序中引入相关代码 ...

  5. NumPy(一.NumPy的介绍)

    什么是 NumPy? NumPy是一个功能强大的Python库,主要用于对多维数组执行计算.NumPy这个词来源于两个单词-- Numerical和Python.NumPy提供了大量的库函数和操作,可 ...

  6. [转载] numpy.bincount介绍以及巧妙计算分类结果中每一类预测正确的个数

    参考链接: Python中的numpy.bincount 之前接触到bincount这个函数,简单的以为它就是计算分类结果中每一类的数量,如下: import numpy as np a = np.a ...

  7. 盲盒小程序的开发功能介绍,优势有哪些

    现如今,盲盒非常受大众的青睐,盲盒抽选是以人们的好奇心为出发点而设计的新玩法.在移动互联网+时代,作为网络营销平台中的盲盒已然成为一种新的消费需求.随之而来的盲盒小程序开发.盲盒商城开发等逐渐成为商家 ...

  8. Python基础(二):Numpy函数介绍:Meshgrid,mgrid,append等

    文章目录 np.meshgrid函数 np.mgrid函数 np.append()函数 [5] 参考资料 np.meshgrid函数 meshgrid函数通常使用在数据的矢量化上.它适用于生成网格型数 ...

  9. Java版的NumPy - NDArray 介绍

    NDArray 的背景介绍 在Python的世界,调用NDArray的标准包叫做NumPy.为了给Java开发者创造同一种工具,亚马逊云服务开源了DJL,一个基于Java的深度学习库.尽管它包含了深度 ...

最新文章

  1. 笔记:Linux下C编程实现每隔一秒向文件中写入当前时间
  2. 类似人手的手部假肢相关研究登上Science子刊封面
  3. 一个html的文件当中读取另一个html文件
  4. mongodb 对内存的占用监控 ——mongostat,linux系统可用的内存是free + buffers + cached...
  5. git pull request工作模式
  6. PHP核心技术笔记(2):面向对象的设计原则
  7. linux下kafka与zookeeper集群部署
  8. 113 虚拟机 错误 mysql_Navicat连接虚拟机mysql常见错误问题及解决方法
  9. python的类变量和成员变量用法_python中类变量和成员变量、局部变量总结
  10. 数学之美系列八-- 贾里尼克的故事和现代语言处理
  11. [算法题] 安排会议室——贪心算法的应用
  12. 图像特征提取之LBP算法
  13. 乐优商城(四十八)评论微服务(一)
  14. 2008服务器远程桌面连接设置密码,WinServer 2008 远程桌面连接设置
  15. spring-security实现权限管理
  16. 信道编码与交织、脉冲成型
  17. asc量子计算机,2020ASC世界大学生超级计算机竞赛聚焦量子计算和语言智能
  18. MyEclipse2017下载
  19. 【目标检测】YOLO系列Anchor标签分配、边框回归(坐标预测)方式、LOSS计算方式
  20. python能参加奥赛吗-孩子学编程都能参加哪些含金量的比赛?

热门文章

  1. 想学Python?那这套教程再适合不过了!
  2. 李彦宏AI布局又下一城,成立生命科学公司“百图生科”
  3. “编程能力差的程序员,90%输在这事上!”谷歌AI专家:都是瞎努力!
  4. 6月技术福利限时免费领
  5. 英特尔蚕食AMD和NVIDIA?
  6. 技术引路:机器学习仍大有可为,但方向在哪里?
  7. 链式比较、奇怪的字母、有趣的import...Python冷知识(六)
  8. 微信真要做操作系统了?
  9. 专访旷视副总裁彭广平:旷视为何选择收购艾瑞思?
  10. 如何使用TensorFlow中的Dataset API