Próbuję przeciąć kolumny z tablicy i przypisać do nowej zmiennej, jak tak.

array1 = array[:,[0,1,2,3,15,16,17,18,19,20]]

Czy jest jakiś skrót na coś takiego?

Próbowałem tego, ale rzuciłem błąd:

array1 = array[:,[0:3,15:20]]

Prawdopodobnie jest to naprawdę proste, ale nie mogę go nigdzie znaleźć.

4
ElkanaTheGreat 27 czerwiec 2017, 23:48

3 odpowiedzi

Najlepsza odpowiedź

Użyj np.r_:

Przekłada przedmioty pokrojone do konkatenacji wzdłuż pierwszej osi.

import numpy as np
arr = np.arange(100).reshape(5, 20)
cols = np.r_[:3, 15:20]

print(arr[:, cols])
[[ 0  1  2 15 16 17 18 19]
 [20 21 22 35 36 37 38 39]
 [40 41 42 55 56 57 58 59]
 [60 61 62 75 76 77 78 79]
 [80 81 82 95 96 97 98 99]]

Pod koniec dnia prawdopodobnie nieco mniej podługę niż to, co masz teraz, ale mógł przydać się do bardziej złożonych przypadków.

4
Brad Solomon 27 czerwiec 2017, 21:08

Możesz użyć list(range(0, 4)) + list(range(15, 20))

0
Igor Yudin 27 czerwiec 2017, 20:53

Dla najbardziej prostych przypadków, najlepszy i najbardziej prosty sposób jest użycie włączania:

array1 = array[0:3] + array[15:20]

Aby uzyskać bardziej skomplikowane przypadki, musisz użyć niestandardowego plasterka, takiego jak numpy's s_, co pozwala na wiele plasterków z lukami, oddzielone przecinkami. Możesz przeczytać o tym Oto.

Ponadto, jeśli twój kawałek podąża za wzorem (tj. Uzyskaj 5, pomiń 10, zdobądź 5 etc), możesz użyć {X0}}, jak wyjaśniono przez użytkownika ncoghlan w To odpowiedź.

3
stybl 27 czerwiec 2017, 21:00