python - 反转numpy数组的最有效方法

标签 python numpy

信不信由你,在分析了我当前的代码之后,numpy 数组反转的重复操作占用了运行时间的一大块。我现在拥有的是常见的基于 View 的方法:

reversed_arr = arr[::-1]

有没有其他方法可以更有效地做到这一点,或者这只是我痴迷于不切实际的 numpy 性能的一种错觉?

最佳答案

reversed_arr = arr[::-1]

给出一个相反的view到原始数组 arr 中。对原始数组 arr 所做的任何更改也将立即在 reversed_arr 中可见。 arrreversed_arr 的底层数据缓冲区是 shared,因此创建此 View 始终是即时的,不需要任何额外的内存分配或复制用于数组内容。

另请参阅有关 NumPy View 的讨论:How do I create a view onto a NumPy array?


View 性能问题的可能解决方案

您重新创建 View 的频率是否超出了您的需要?您应该能够执行以下操作:

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 中做事的最快方法。如果这是您已经在做的事情,我认为您无法改进。

关于python - 反转numpy数组的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6771428/

相关文章:

python - 未找到 cherrypy jsondecoder

Python 惰性求值 numpy ndarray

python - 从维数未知的 numpy 数组中提取超立方 block

python - [Py安装程序] : Working code produces ModuleNotFoundError when turned to exe

python - Pandas 分层数据框

python - 如何避免 matplotlib.fill_ Between 和 where 之间的间隙

Python 2.7 - 如何计算文件中的行数并进一步使用结果

python - Python 中的 Oracle 存储过程的命名参数

python - 使用 matplotlib 绘制地震摆动轨迹

python - numpy 测量时间 - 语法错误