【问题标题】:Creating a 3d numpy array matrix using append method使用 append 方法创建一个 3d numpy 数组矩阵
【发布时间】:2016-02-17 14:21:43
【问题描述】:
有没有办法通过附加 2d numpy 数组来创建 3d numpy 数组?我目前所做的是将我的 2d numpy 数组附加到预先确定的 2d numpy 数组的初始化列表中,即 List=[np.zeros((600,600))]。附加我所有的 2d numpy 数组后,我使用 numpy.dstack 创建 3d numpy 数组。我认为这不是一个非常有效的方法。任何建议。
【问题讨论】:
标签:
python
numpy
memory
arrays
【解决方案1】:
最有效的方法是先初始化 3d 数组,然后按顺序将数据写入其中。通过避免不必要的副本来提高效率。然而,收益是微乎其微的 - 只要您不使用非常大的数组(在 3 个维度中的任何一个中)。
import numpy as np
arr = np.empty(shape=(2, 100, 100))
arr[0,:,:] = array_2d_1
arr[1,:,:] = array_2d_2
【解决方案2】:
根据定义,您不能将任何内容附加到数组,因为当数组在内存中声明时,它必须保留所需的空间。
您可以做的是声明一个具有已知几何形状和初始值的数组,然后重写每行的新值,保持“附加”行的计数器,或者您可以在用完时将数组的大小加倍空间。