首页 > 后端开发 > Python教程 > 在 NumPy 数组上映射函数的最有效方法是什么?

在 NumPy 数组上映射函数的最有效方法是什么?

Barbara Streisand
发布: 2024-12-13 17:03:09
原创
667 人浏览过

What's the Most Efficient Way to Map Functions Over NumPy Arrays?

探索 NumPy 中的高效数组映射

在本次讨论中,我们深入研究在 NumPy 数组上映射函数的最有效方法。一种常见的方法是利用列表理解,然后转换回 NumPy 数组:

import numpy as np 

x = np.array([1, 2, 3, 4, 5])
squarer = lambda t: t ** 2
squares = np.array([squarer(xi) for xi in x])
登录后复制

但是,由于中间 Python 列表的创建和转换,这种方法可能会表现出低效率。让我们探索可能提高性能的替代方法。

利用本机 NumPy 函数

如果目标函数已在 NumPy 中实现,则最好直接使用它,如下所示演示如下:

x ** 2
登录后复制

由于固有的优化,这种方法比其他方法要快得多NumPy 的原生函数。

向量化函数

当所需函数不是 NumPy 原生函数时,向量化是一种强大的技术,可以按元素应用函数数组。这可以使用以下方法来完成:

vf = np.vectorize(f)
vf(x)
登录后复制

此方法为向量化操作提供了高效的实现。

使用 fromiter()

fromiter()函数可用于创建一个迭代器,该迭代器根据提供的函数和数组生成元素值:

np.fromiter((f(xi) for xi in x), x.dtype)
登录后复制

此方法特别适合从迭代器生成自定义数组元素。

性能比较

经验测试显示显着的性能各种测绘方法之间的差异。如果该函数在 NumPy 中进行矢量化,则直接使用该函数在速度方面是无与伦比的。对于自定义函数,向量化或 fromiter() 通常比基于列表理解的方法具有显着优势。

结论

在 NumPy 数组上映射函数的最有效方法取决于具体的功能和数据特征。如果可能,强烈建议利用本机 NumPy 函数。矢量化和 fromiter() 为自定义函数提供了有效的替代方案。性能测试对于确定给定场景的最佳方法至关重要。

以上是在 NumPy 数组上映射函数的最有效方法是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板