【发布时间】:2013-12-03 08:04:12
【问题描述】:
我有一个大型 numpy.ndarray 数组,我想从中提取第 4 列和第 5 列并将这些列放入 2D 数组中。 [i,0] 元素应该是第 4 列的值,[i,1] 应该是第 5 列的元素。
我尝试使用 numpy.hstack 函数来执行此操作。
a = numpy.asarray([1, 2, 3, 4, 5])
for i in range(5):
a = numpy.vstack([a, numpy.asarray([1, 2, 3, 4, 5])])
combined = np.hstack([a[:,3], a[:,4]])
但是,这只是给了我一个 nx1 数组。我尝试了多种使用连接的方法,如下所示:
combined = np.concatenate([a[:,3], a[:,4]])
combined = np.concatenate([a[:,3], a[:,4]], axis=1)
combined = np.concatenate([a[:,3].T, a[:,4].T])
我觉得 hstack 是我想要的功能,但我似乎无法弄清楚如何让它给我一个 nx2 数组。谁能指出我正确的方向?任何帮助表示赞赏。
【问题讨论】:
-
“特征”或任何带有 numpy 数组的东西是转置(
.T)一维数组返回相同的东西。如果你真的要使用hstack,你需要先把它们做成多维的(或者使用atleast_2d或者类似的),或者使用vstack然后转置结果。 -
也可以查看
np.column_stack: stackoverflow.com/q/14741061/2379410
标签: python arrays numpy concatenation