当前位置: 首页 > 面试题库 >

反转numpy数组的最有效方法

曹铭晨
2023-03-14
问题内容

信不信由你,在分析当前代码后,numpy数组还原的重复操作将占用大量的运行时间。我现在拥有的是基于视图的常见方法:

reversed_arr = arr[::-1]

还有其他方法可以更有效地执行此操作,还是我对不切实际的numpy性能的痴迷所致的幻觉?


问题答案:

创建时,reversed_arr您正在创建原始数组的视图。然后,您可以更改原始数组,并且视图将更新以反映所做的更改。

您是否经常需要重新创建视图?您应该能够执行以下操作:

arr = np.array(some_sequence)
reversed_arr = arr[::-1]

do_something(arr)
look_at(reversed_arr)
do_something_else(arr)
look_at(reversed_arr)

我不是numpy专家,但这似乎是用numpy做事的最快方法。如果这是您已经在做的事情,我认为您无法对此进行改进。



 类似资料:
  • 在numpy数组上映射函数最有效的方法是什么?我在当前项目中的做法如下: 然而,这看起来可能是非常低效的,因为我使用列表理解来构造新的数组作为Python列表,然后再将其转换回Numpy数组。 我们能做得更好吗?

  • 问题内容: 在numpy数组上映射函数的最有效方法是什么?我在当前项目中所做的工作如下: 但是,这似乎效率很低,因为我正在使用列表推导将新数组构造为Python列表,然后再将其转换回numpy数组。 问题答案: 我测试过的所有建议的方法,加上与(我的一个小项目)。 消息1:如果可以使用numpy的本机函数,请执行此操作。 如果你想已经矢量化功能的矢量(如在原岗位的例子),使用的是多比什么都更快(注

  • 问题内容: 我正在使用MySQLdb和Python。我有一些基本的查询,例如: 我需要“结果”作为NumPy数组,并且我希望在内存消耗方面节省成本。似乎逐行复制数据效率极低(将需要两倍的内存)。有没有更好的方法将MySQLdb查询结果转换为NumPy数组格式? 我之所以要使用NumPy数组格式,是因为我希望能够轻松地对数据进行切片和切块,在这方面,python对多维数组似乎并不友好。 谢谢! 问题

  • 问题内容: 除了遍历所述集合的内容并将每个项目手动推入数组之外,是否有更有效的方法将HTMLCollection转换为数组? 问题答案: var arr = Array.prototype.slice.call( htmlCollection ) 使用“本地”代码将具有相同的效果。 编辑 由于这有很多观点,请注意(按@oriol的评论),以下更简洁的表达 实际上 等效: 但是,请注意@JussiR

  • 问题内容: 示例问题 作为一个简单的示例,请考虑以下定义的numpy数组: 其中,像这样在控制台输出: 我现在想按行“向前填充” array中的值。我的意思是用左侧最接近的有效值替换每个值。所需的结果如下所示: 到目前为止尝试过 我试过使用for循环: 我还尝试过使用熊猫数据框作为中间步骤(因为熊猫数据框具有非常整洁的内置方法用于正向填充): 以上两种策略都能产生预期的结果,但是我一直在想:仅使用

  • 有没有一个有效的方法来删除Nones从Numpy数组和调整数组到它的新大小? 例如,如何在不在python中迭代的情况下从这个框架中删除None。我可以很容易地对它进行迭代,但正在处理一个可能被多次调用的api调用。