由于数据重复,试图将列(np.concatenate)添加到numpy数组的内存不足

时间:2018-08-13 10:16:26

标签: python numpy

我有这个小功能,可以在多维ndarray的任意维度上添加一列(也许更准确地说是在任何轴上增加维度)。

def add_column(A, count=1, append=True, axis=-1):
    '''add extra column(s) to i'th dimension of ndarray A'''
    s = list(A.shape)
    s[axis] = count
    Z = np.zeros(s, dtype=A.dtype.type)
    if append: B = np.concatenate([A,Z], axis=axis)
    else: B = np.concatenate([Z,A], axis=axis)
    return B

大多数情况下都可以正常工作,但是如果A很大,我会用光内存,因为连接正在复制数据(不是我没有足够的内存来容纳较大的数组,我没有同时具有较大数组和原始数组的内存)。有没有增加数据而不复制数据的方法?几乎就像我需要做的那样:将A转储到磁盘,创建一个具有额外列的新数组B,然后将A读入B。但这会非常慢。还有另一种方法吗?

0 个答案:

没有答案