Python Range() 与 Numpy.arange() 函数有什么区别?

2023-12-27

我在网络搜索中了解到 numpy.arange 比 python range 函数占用的空间更少。但我尝试过 使用下面它给了我不同的结果。

import sys

x = range(1,10000)
print(sys.getsizeof(x))  # --> Output is 48

a = np.arange(1,10000,1,dtype=np.int8)
print(sys.getsizeof(a))  # --> OutPut is 10095

有人可以解释一下吗?


In PY3, range是一个可以生成数字序列的对象;这不是实际的顺序。您可能需要温习一些基本的 Python 阅读内容,注意列表和生成器等内容以及它们的差异。

In [359]: x = range(3)                                                                                 
In [360]: x                                                                                            
Out[360]: range(0, 3)

我们使用类似的东西list或实际创建这些数字的列表理解:

In [361]: list(x)                                                                                      
Out[361]: [0, 1, 2]
In [362]: [i for i in x]                                                                        
Out[362]: [0, 1, 2]

范围经常用于for i in range(3): print(i)一种循环。

arange is a numpy产生一个函数numpy array:

In [363]: arr = np.arange(3)                                                                           
In [364]: arr                                                                                          
Out[364]: array([0, 1, 2])

我们可以迭代这样的数组,但它比 [362] 慢:

In [365]: [i for i in arr]                                                                             
Out[365]: [0, 1, 2]

但对于数学计算来说,数组要好得多:

In [366]: arr * 10                                                                                     
Out[366]: array([ 0, 10, 20])

该数组也可以从列表 [361] 创建(并且为了与早期的 Py2 使用兼容)range本身):

In [376]: np.array(list(x))     # np.array(x)                                                                        
Out[376]: array([0, 1, 2])

但这比使用慢arange直接(这是一个实现细节)。

尽管名称相似,但它们不应被视为简单的替代品。使用range在基本的 Python 结构中,例如for循环和理解。使用arange当你需要一个数组时。

Python 的一个重要创新(与早期语言相比)是我们可以直接在列表上进行迭代。我们不必单步执行索引。如果我们需要索引和值,我们可以使用enumerate:

In [378]: alist = ['a','b','c']                                                                        
In [379]: for i in range(3): print(alist[i])   # index iteration                                                        
a
b
c
In [380]: for v in alist: print(v)    # iterate on list directly                                       
a
b
c
In [381]: for i,v in enumerate(alist): print(i,v)    #  index and values                                                  
0 a
1 b
2 c

因此你可能看不到range在基本的 Python 代码中使用了这么多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python Range() 与 Numpy.arange() 函数有什么区别? 的相关文章

随机推荐

  • 如何通过ajax从服务器发送png图像以在浏览器中显示

    我一直在努力完成一项非常正常的任务 我将图像上传并保存到我的网络服务器 并将文件的路径保存在 MySQL 数据库中 这一切都正常 不起作用的是从服务器获取图像文件并通过 ajax 将其显示在页面上 最初我试图从数据库中检索路径 并更新标签的
  • MySQL 原子插入(如果不存在)具有稳定的自动增量

    在 MySQL 中 我使用包含唯一名称以及这些名称的 ID 的 InnoDB 表 客户需要原子地检查是否存在名称 如果不存在则插入新名称 并获取 ID ID 是一个AUTO INCREMENT值 并且在检查现有值时不得失控地增加 无论的设定
  • MySQL 布尔全文搜索中的“~”(波形符)运算符的行为与 MySQL 开发人员网站中所述不同

    我创建了下表fruits CREATE TABLE fruits id tinyint unsigned NOT NULL AUTO INCREMENT name varchar 200 NOT NULL PRIMARY KEY id FU
  • Python PIL Image.tostring()

    我是 Python 和 PIL 新手 我正在尝试遵循代码示例 了解如何通过 PIL 将图像加载到 Python 然后使用 openGL 绘制其像素 下面是一些代码行 from Image import im open gloves200 b
  • HTTPS 握手何时发生?

    我从各种来源了解到 HTTPS 握手是使用 HTTPS 最重要的部分 我在服务器之间内部使用 POST 来传递信息 并希望使用 HTTPS 我想知道实际的 HTTPS 握手持续 保持开放 多久 是否为我发送到服务器的每个 POST 重新完成
  • JTable 单元格中的小部件

    小部件位于JTable列应该与普通列没有区别 对吧 似乎存在行为差异 采取Swing 文档示例 http docs oracle com javase tutorial uiswing components table html data并
  • 如何解决类型的发散隐式扩展

    我想上我的案例课Event K V 按键订购K总是 但我需要能够比较不同值的事件V 如何解决这种发散的隐式扩展 import scala math Ordering object Event case class Event K V key
  • 无法使用 Dancer::Plugin::Database 连接到多个数据库

    我正在使用 Dancer Plugin Database 从我的 dancer 应用程序连接数据库 对于单连接来说它工作得很好 当我尝试多个连接时出现错误 如何添加多个连接 我在 config yml 文件中添加了以下代码 plugins
  • React Native TextInput setState() 问题

    我在 TextInput 的 onChangeText 中遇到了 React Native 的 this setState 问题 我试图在它下面的文本标签中显示 TextInput 的内容 然而 它什么也不显示 setState 调用永远不
  • ajax中如何检查数据是否传递

    我有以下要求来获取注册表以发布数据 但我无法测试它 有人可以帮忙吗 我想看看数据有没有通过 我有 jquery cdn 和 jquery validate 我有plunker http plnkr co edit XmsAh20ZjGwtS
  • 启用静态库中使用的 ifdef 宏

    可以使用静态库中定义的宏吗 我有自己的调试宏 名为TWDEBUG我在为共享而创建的静态库中使用它 如果我将静态库导入到新项目中并使用它 编译器似乎无法识别它 我确实设置了预处理器宏TWDEBUG and Other C flags and
  • 向 VTL 中的对象添加键/值对(适用于 API 网关)

    我正在为 AWS API Gateway 集成响应编写映射模板 我想将键 值对添加到返回 Lambda 函数的 JSON 对象 我的函数返回一些 JSON 如下所示 id 1234 name Foo Barstein 我希望模板输出如下内容
  • 当 AKMicrophone 存在时来自 AKMIDISampler 的连续正弦波

    当存在初始化的 AKMicrophone 时 我在项目中使用 AKMIDISampler 时遇到问题 在采样器上调用 播放 时 除了正确播放木版样本外 第一次 播放 被称为恒定正弦波开始播放 它永远不会停止 我用下面最少的代码复制了这个问题
  • 将 ruby​​ 脚本文件传递到 Rails 控制台

    有没有办法传递 ruby 文件 foo rb到 Rails 控制台 预期结果是控制台启动 Rails 环境后运行文件 或者任何其他方式允许我在 Rails 环境中执行文件 从命令提示符触发 实际上 最简单的方法是运行它load在 的里面ra
  • 从表中获取最后一条记录 ID 的最安全方法

    在 SQL Server 2008 及更高版本中 最好 最安全 最正确的方法是什么 从数据库表中检索ID 基于自动增量主键 检索其他列最后一行的值 例如 SELECT TOP 1 FROM Table ORDER BY DESC SELEC
  • 带镶嵌边框的 CSS 圆圈

    我正在尝试在 CSS 中创建一个带有镶嵌边框的圆圈 如下例所示 我有以下 HTML 和 CSS 但它没有产生我需要的效果 inlay circle width 15rem height 15rem border solid a7a9ac 2
  • 图数据结构的C实现

    我已经学习了图数据结构的基础知识 现在我想实现所有可以在图上执行的结构 算法 操作 请分享一些有用的链接 我可以在其中开始用 C 语言实现图形 邻接表 http en wikipedia org wiki Adjacency list an
  • 滚动查看器的子元素阻止用鼠标滚轮滚动?

    我在使鼠标滚轮滚动在以下 XAML 中工作时遇到问题 为了清楚起见 我对其进行了简化
  • 使用正则表达式选择 numpy 数组中的元素

    可以如下选择 numpy 数组中的元素 a np random rand 100 sel a gt 0 5 select elements that are greater than 0 5 a sel 0 do something wit
  • Python Range() 与 Numpy.arange() 函数有什么区别?

    我在网络搜索中了解到 numpy arange 比 python range 函数占用的空间更少 但我尝试过 使用下面它给了我不同的结果 import sys x range 1 10000 print sys getsizeof x gt