Numpy 优势| 学习笔记

简介: 快速学习 Numpy 优势

开发者学堂课程【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” 的集合。

要存储八个同学的成绩

image.png

用 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 也在机器学习领域达不到好的效果。

image.png

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


四、Ndarray 的优势

1.储存风格

image.png

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

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

2.并行化运算

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

3.底层语言

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

相关文章
|
数据可视化 Python
python Numpy的优势
python Numpy的优势
302 1
|
BI 测试技术 索引
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)-1
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)
|
11月前
|
Python
Numpy学习笔记(一):array()、range()、arange()用法
这篇文章是关于NumPy库中array()、range()和arange()函数的用法和区别的介绍。
557 6
Numpy学习笔记(一):array()、range()、arange()用法
|
11月前
|
索引 Python
Numpy学习笔记(三):np.where和np.logical_and/or/not详解
NumPy库中`np.where`和逻辑运算函数`np.logical_and`、`np.logical_or`、`np.logical_not`的使用方法和示例。
680 1
Numpy学习笔记(三):np.where和np.logical_and/or/not详解
|
11月前
|
Python
Numpy学习笔记(四):如何将数组升维、降维和去重
本文介绍了如何使用NumPy库对数组进行升维、降维和去重操作。
197 1
|
11月前
|
Python
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
NumPy库中的`np.concatenate`和`np.append`函数,它们分别用于沿指定轴拼接多个数组以及在指定轴上追加数组元素。
459 0
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
|
11月前
|
机器学习/深度学习 索引 Python
Numpy学习笔记(二):argmax参数中axis=0,axis=1,axis=-1详解附代码
本文解释了NumPy中`argmax`函数的`axis`参数在不同维度数组中的应用,并通过代码示例展示了如何使用`axis=0`、`axis=1`和`axis=-1`来找到数组中最大值的索引。
1152 0
Numpy学习笔记(二):argmax参数中axis=0,axis=1,axis=-1详解附代码
|
存储 缓存 C语言
|
11月前
|
PyTorch 算法框架/工具 Python
Pytorch学习笔记(十):Torch对张量的计算、Numpy对数组的计算、它们之间的转换
这篇文章是关于PyTorch张量和Numpy数组的计算方法及其相互转换的详细学习笔记。
247 0
|
vr&ar 索引 Python
Numpy学习笔记之Numpy练习
Numpy学习笔记之Numpy练习