Mam jedną dużą tablicę numpy.ndarray, którą chcę wyodrębnić 4 i 5 kolumn i umieścić te kolumny do tablicy 2D. Element [I, 0] powinien być wartością na 4 kolumnie, a [I, 1] powinien być elementem z 5th kolumny.

Próbuję użyć funkcji numpy.hstack, aby to zrobić.

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]])

Jednak to po prostu daje mi tablicę NX1. Próbowałem wielu podejść za pomocą Concatenate, które wyglądają jak te przykłady:

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])

Czuję się jak Hstack jest funkcją, którą chcę, ale nie mogę się dowiedzieć, jak sprawić, że daje mi tablicę NX2. Czy ktoś może wskazać mnie we właściwym kierunku? Każda pomoc jest doceniana.

10
Sterling 19 listopad 2013, 20:43

3 odpowiedzi

Najlepsza odpowiedź

Myślę, że zrobi to, co chcesz:

a[:,[3,4]]
3
A.E. Drew 19 listopad 2013, 16:49

Wystarczy wyciąć swoje dane w następujący sposób:

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]

Prowadzi do:

[[3 4]
 [3 4]
 [3 4]
 [3 4]]
4
Anton Ermakov 20 październik 2016, 15:42

Możesz także użyć zip:

>>> c = numpy.array( zip( a[:, 3], a[:, 4]) )
>>> c
array([[4, 5],
       [4, 5],
       [4, 5],
       [4, 5],
       [4, 5],
       [4, 5]])
1
mdml 19 listopad 2013, 16:51