gpt4 book ai didi

python - 我应该预分配一个 numpy 数组吗?

转载 作者:太空宇宙 更新时间:2023-11-03 11:26:09 24 4
gpt4 key购买 nike

我有一个类及其方法。该方法在执行期间重复多次。此方法使用 numpy 数组作为临时缓冲区。我不需要在方法调用之间的缓冲区内存储值。我应该创建数组的成员实例以避免方法执行期间内存分配的时间泄漏吗?我知道,最好使用局部变量。但是,Python 是否智能到只为数组分配一次内存?

class MyClass:
def __init__(self, n):
self.temp = numpy.zeros(n)
def method(self):
# do some stuff using self.temp

或者

class MyClass:
def __init__(self, n):
self.n = n
def method(self):
temp = numpy.zeros(self.n)
# do some stuff using temp

更新:用零替换空

最佳答案

Numpy 数组一旦创建就很快。但是,创建数组非常昂贵。不仅仅是创建一个 Python 列表。

在像您这样的情况下,您一次又一次地创建一个新数组(在 for 循环中?),我总是会预先分配数组结构,然后重新使用它。

我无法评论 Python 是否足够聪明来优化它,但我猜它不是 :)

您的数组有多大,调用此方法的频率如何?

关于python - 我应该预分配一个 numpy 数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33333683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com