最快的方法来增长一个numpy数值数组。

10 浏览
0 Comments

最快的方法来增长一个numpy数值数组。

要求:

  • 我需要根据数据任意增长一个数组。
  • 我可以猜测数组的大小(大约100-200个),但不能保证数组每次都能容纳。
  • 一旦数组增长到最终大小,我需要对其进行数值计算,所以最终希望得到一个二维的numpy数组。
  • 速度至关重要。例如,对于300个文件中的一个文件,update()方法被调用4500万次(大约需要150秒),finalize()方法被调用50万次(总共需要106秒),总共需要大约250秒。

这是我的代码:

def __init__(self):
    self.data = []
def update(self, row):
    self.data.append(row)
def finalize(self):
    dx = np.array(self.data)

我尝试过其他的代码,但速度慢得多。

class A:
    def __init__(self):
        self.data = np.array([])
    def update(self, row):
        np.append(self.data, row)
    def finalize(self):
        dx = np.reshape(self.data, size=(self.data.shape[0]/5, 5))

下面是调用的原理图:

for i in range(500000):
    ax = A()
    for j in range(200):
         ax.update([1,2,3,4,5])
    ax.finalize()
    # 对ax进行一些处理

0