探索 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中文网其他相关文章!