使用 python 的插入列表



例如,我设置了x和y的列表

x=[1,2,3,4,5,6]
y=[1,4,9,16,25,36]

我需要找到一组定义为

u = [[2,3,1],[4,2,1],[6,3,2],[2,4,5],[2,3,6]]

我正在使用这个插值模块。它类似于 numpy 插值

目前,我关注:

v = [interp(x,y,u[i]) for i in range(len(k))]

有没有办法绕过for循环,因为它增加了我的计算时间。我宁愿留出我的记忆而不是时间。我的清单大小非常大!我希望可以使用内置的地图功能,但不知道如何使用它。

map()内部

也循环 - 它只是在C端做它更快。但是,您已经在使用列表推导,它也卸载到 C 并且可能比 map() 更快。

也就是说,这里有机会通过更改循环来提高速度和可读性:

v = [interp(x, y, i) for i in u]

在 Python 中,我们遍历迭代器,而不是索引。通过间接循环,您将显着减慢循环速度。这也使它的可读性大大降低。

至于使用 map() ,可以使用 functools.partial() 来创建一个函数,该函数使用 x 调用interp()并预填充y

import functools
f = functools.partial(interp, x, y)
v = list(map(f, u))

但是,正如我之前所说,这可能会更慢,而且可读性要差得多。

(我在此答案中使用术语 C 端,假设您使用的是 CPython,但在任何其他实现中,它也会使用任何可用的较低级别选项更有效地实现)。

相关内容

  • 没有找到相关文章

最新更新