且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Numpy 优势| 学习笔记

更新时间:2022-09-06 18:15:37

开发者学堂课程【Python 科学计算库 NumPy 快速入门Numpy 优势】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/605/detail/8815


Numpy 优势


内容简介:

一、Numpy 介绍

二、Ndarray 介绍

三、Ndarray 与 Python 原生 list 运算效率对比

四、Ndarray 的优势


一、Numpy 介绍

Numpy (Numerical Python) 是一个开源的 Python 科学计算库,用于快速处理任意维度的数组。 Numpy 支持常见的数组和矩阵操作。

对于同样的数值计算任务,使用 Numpy 比直接使用 Python 要简洁的多。

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


二、Ndarray 介绍

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

要存储八个同学的成绩

Numpy 优势| 学习笔记

用 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

返回结果:

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]])


三、Ndarray 与 Python 原生 list 运算效率对比

在这里我们通过一段代码运行来体会到 ndarray 的好处

import random

import time

生成一个大数组

python_list= []

for i in range (100000000) :

python_list.append(random.random () )

ndarray_list=np.array (python_1ist)

len (ndarray_list)100000000

原生 pythonlist 求和

t1=time.time ()

a=sum (python_1ist)

t2=time.time ()

d1=t2-t1

ndarray 求和

t3=time.time ()

b=np.sum (ndarray_list)

t4=time.time ()

d2=t4-t3

d1

0. 7309620380401611

d2

0. 12980318069458008

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

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

Numpy 优势| 学习笔记

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


四、Ndarray 的优势

1.储存风格

Numpy 优势| 学习笔记

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

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

2.并行化运算

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

3.底层语言

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