【发布时间】:2017-04-30 18:59:51
【问题描述】:
我有以下问题。我需要通过添加行和列来更改一个 Numpy 数组的形状以匹配另一个 Numpy 数组的形状。
假设这是需要更改的数组:
change_array = np.random.rand(150, 120)
这是引用数组:
reference_array = np.random.rand(200, 170)
为了匹配形状,我添加了包含零的行和列,使用以下函数:
def match_arrays(change_array, reference_array):
cols = np.zeros((change_array.shape[0], (reference_array.shape[1] - change_array.shape[1])), dtype=np.int8)
change_array = np.append(change_array, cols, axis=1)
rows = np.zeros(((reference_array.shape[0] - change_array.shape[0]), reference_array.shape[1]), dtype=np.int8)
change_array = np.append(change_array, rows, axis=0)
return change_array
完美的工作并将change_array的形状更改为reference_array的形状。但是,使用这种方法,数组需要在内存中复制两次。我了解 Numpy 如何需要在内存中制作数组的副本,以便有空间来追加行和列。
由于我的数组可能变得非常大,我正在寻找另一种内存效率更高的方法,它可以达到相同的结果。谢谢!
【问题讨论】:
标签: arrays performance numpy memory