Python NumPy相对于list列表的优势介绍

简介:
本文主要介绍Python中,使用NumPy处理数据,相对于传统的Python的list列表的优势,以及相关的示例代码。

1、占用空间和读取速度

NumPy数组是更紧凑的Python列表,列表的列表描述同样的数据,在Python中,可能至少需要20 MB左右,而单元格中具有单精度浮点数的NumPy 3D数组可以容纳4MB。读写数据NumPy也更快。

一个Python列表是一个Python对象的指针数组,至少4个字节指针+ 16字节甚至最小的Python对象。NumPy数组是一个统一值的数组——单精度数字每个4字节,双精度数字每个8字节。不太灵活,但是标准Python列表的灵活性会占用更大的内存空间。

2、使用NumPy处理数据更方便

NumPy不仅更高效,而且也更方便。可以容易得到很多向量和矩阵运算。

例如

可以直接将多维数据集从文件读入array

import numpy 
x = numpy.fromfile(file=open("data"), dtype=float).reshape((100, 100, 100))
# 可以按第二维度求和:
s = x.sum(axis=1)
# 找出高于阈值的数据:
(x > 0.5).nonzero()
# 删除第三维上的每个偶数索引片:
x[:, :, ::2]

注意:许多有用的库都适用于 NumPy 数组。例如,统计分析和可视化库。即使你没有性能问题,学习 NumPy是很有用的。

3、list列表和 NumPy数组速度测试

列表和 NumPy 数组进行求和的测试,表明 NumPy 数组上的求和速度快 10 倍,

例如

from numpy import arange
from timeit import Timer
Nelements = 10000
Ntimeits = 10000
x = arange(Nelements)
y = range(Nelements)
t_numpy = Timer("x.sum()", "from __main__ import x")
t_list = Timer("sum(y)", "from __main__ import y")
print("numpy: %.3e" % (t_numpy.timeit(Ntimeits)/Ntimeits,))
print("list:  %.3e" % (t_list.timeit(Ntimeits)/Ntimeits,))

输出结果

numpy: 7.599e-06
list: 6.382e-05

4、使用区别

1)与 Python 列表(可以动态增长)不同,Numpy 数组在创建时具有固定大小。更改 ndarray 的大小将创建一个新数组并删除原始数组。

2)NumPy 数组中的元素都需要具有相同的数据类型(我们也可以使用异构类型,但这将不允许进行数学运算),因此内存中的大小相同。

3)NumPy 数组有助于对大量数据进行数学运算和其他类型的运算。通常,与使用 Python list列表等相比,此类操作的执行效率更高,代码更少。

了解更多分析及数据抓取可查看:
http://data.yisurvey.com:8989/
特别说明:本文旨在技术交流,请勿将涉及的技术用于非法用途,否则一切后果自负。如果您觉得我们侵犯了您的合法权益,请联系我们予以处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NumPy array和Python List是两种常见的数据类型,它们都具有存储和操作数据的功能,但是这两种数据类型的使用方式和功能特性有很大的差异。 首先,NumPy array是NumPy库的一个核心数据类型,它是一个固定大小且与元素类型同的数组,而Python List是一个可变大小的列表,可以包含不同类型的数据。由于NumPy array是固定大小的,较于Python List,在存储和访问大规模数据时更为高效。 其次,NumPy array支持广播和向量化操作,可以进行逐元素的运算,使得数据运算更加快速和高效,而Python List则需要一个for循环来完成逐个运算。 此外,NumPy库还可以进行线性代数、统计计算等高级运算。对于处理一些科学计算和数据分析任务,NumPy array可以更好地满足需求。 相比之下,PyTorch是一个基于Torch的Python深度学习框架,它的主要数据类型是Tensors。Tensors也类似于NumPy的array,可以存储和操作数据,但它同时支持GPU计算,可以快速计算神经网络中的大量计算。 此外,PyTorch框架还提供了自动微分、模型构建和优化等功能,对于进行深度学习任务的开发人员来说是非常便利的。而NumPy库则更适用于进行一些基础的数值计算和科学计算任务。 总之,NumPy array和Python List是两种不同的数据类型,适用于不同的数据处理场景,而PyTorch中的Tensor则是一种更专门用于深度学习的数据类型。选择合适的数据类型,可以在数据处理和深度学习任务中提高效率和精度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值