我有这个小功能,可以在多维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。但这会非常慢。还有另一种方法吗?