【发布时间】:2018-03-20 07:56:35
【问题描述】:
我有一个 numpy 数组
test_array = np.arange(100).reshape((4,25))
我想合并以下列以形成一个新数组
1:3, 2:4, 3:15, 2:24, 6:8, 12:13
我知道这段代码会起作用
np.hstack((test_array[:,1:3],test_array[:,2:4],test_array[:,3:15],test_array[:,2:24],test_array[:,6:8],test_array[:,12:13]))
但如果有更好的方法可以避免复制这么多的“test_array”,比如:
np.hstack((test_array[:,[1:3 2:4 3:15 2:24 6:8 12:13]]))
【问题讨论】:
-
有一些方法可以让这个操作更好地读写,但不幸的是没有一种方法可以避免复制数据。
-
看起来 np.r_ 是一种有效的方法,就像在 MATLAB 中一样
-
是的,这是一个不错的解决方案。我只是想让你知道它不会避免复制。
-
感谢 Nils :) 实际上在我的代码中,“test_array”的数组名很长,导致文本到处泛滥。 np.r 帮我整理了一下:)
-
您在索引之后连接切片,
r_在索引之前进行连接。它们的速度大致相当。