假设我有一些NumPy数组a
和{a.shape
是{N
是一些样本,根据我的问题/算法可能会有所不同,但是a
和{
现在我需要另一个形状为(N, 7500)
的数组c
,它保存[0:5000]
中{
目前,我正在创建一个零填充的缓冲区数组,并将值切片到其中:
# ...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
,而不创建{
c = np.hstack([a,b])
会做你想做的。另请参见np.concatenateTimeit结果
所以连接可能要快一点,因为
hstack
只是concatenate
周围的包装器(不必要的函数调用)作为参考
^{pr2}$似乎和
concatenate
一样快。但这只是因为第一个轴是1000
。如果将第一个轴更改为只包含10
元素,则计时完全不同:hstack
快得多:如果使用小数组,
hstack
比其他解决方案慢一些。 在内存使用方面,这两种方法应该是相似的。在对于这些大小,只使用hstack是合理的。在
相关问题 更多 >
编程相关推荐