如何使用numpy的hstack?

时间:2013-11-19 16:43:38

标签: python arrays numpy concatenation

我有一个大的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数组。我尝试过使用concatenate的多种方法,看起来像这些例子:

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数组。谁能指出我正确的方向?任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:4)

按如下方式切出数据:

X = [[0 1 2 3 4]
     [0 1 2 3 4]
     [0 1 2 3 4]
     [0 1 2 3 4]]

slicedX = X[:,3:5]

结果:

[[3 4]
 [3 4]
 [3 4]
 [3 4]]

答案 1 :(得分:3)

我认为这会做你想做的事情:

a[:,[3,4]]

答案 2 :(得分:1)

您还可以使用zip

>>> c = numpy.array( zip( a[:, 3], a[:, 4]) )
>>> c
array([[4, 5],
       [4, 5],
       [4, 5],
       [4, 5],
       [4, 5],
       [4, 5]])