【发布时间】:2016-05-20 22:51:48
【问题描述】:
假设我有一些 NumPy 数组 a 和 b,其中 a.shape 是 (N, 5000) 和 b.shape 是 (N, 2500)。 N 是一些样本,可能会根据我的问题/算法而有所不同 - 但对于 a 和 b,它总是相同的。
现在我想要另一个形状为(N, 7500) 的数组c,它在[0:5000] 中保存a 的值,在[5000:7500] 中保存b 的值。
目前我正在创建一个零填充的缓冲区数组并将值切片到其中:
# ...retrieving a
# ...retrieving b
c = zeros.((N, 7500)).astype(np.float32)
# insert values of a
c[:, 0:5000] = a
# insert values of b
c[:, 5000:7500] = b
# free up memory
del a, b
这是一种快速/高效的(因此是“pythonic”/“numpy'ish”)方式吗?或者是否存在在空间/内存消耗或计算时间方面更好的解决方案?
a 和 b 是从其他地方加载并进行预处理的,因此不能以某种方式直接将数据插入缓冲区 c 而不创建 a 和 b。
【问题讨论】:
-
对于像这样的二维数组
hstack只是concatenateon axis=1;concatenate是编译后的代码,但据我了解,它只是做你正在做的事情——分配接收器并复制值。
标签: python arrays numpy concatenation slice