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

我有一个班级和它的方法.该方法在执行期间重复多次.此方法使用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是否足够智能来优化它,但我猜它不是:)

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

点赞