Bądź indeks kawałek, lista lub tablica
X[[0],:]
X[0:1,4]
Ale nie ma nic złego w reshape
innych niż fakt, że wymaga pisanie. To nie jest powolne. [None,:]
to dobra krótka ręka.
Zastosowanie wskaźnika listy może być najkrótszej, ale nie wytwarzać kopię (plus lub minus a) i wolniej
Na tablicy (100,100)
całkowitą:
In [487]: timeit x[[50],:]
100000 loops, best of 3: 10.3 µs per loop # slowest
In [488]: timeit x[50:51,:]
100000 loops, best of 3: 2.24 µs per loop # slice indexing is fast
In [489]: timeit x[50,:].reshape(1,-1)
100000 loops, best of 3: 3.29 µs per loop # minimal time penalty
In [490]: timeit x[50,:][None,:]
100000 loops, best of 3: 3.55 µs per loop
In [543]: timeit x[None,50,:] # **best**
1000000 loops, best of 3: 1.76 µs per loop
jeden test do kopiowania jest porównanie wskaźnika bufora danych z oryginałem.
In [492]: x.__array_interface__['data']
Out[492]: (175920456, False)
In [493]: x[50,:].__array_interface__['data']
Out[493]: (175940456, False)
In [494]: x[[50],:].__array_interface__['data']
Out[494]: (175871672, False) # different pointer
In [495]: x[50:51,:].__array_interface__['data']
Out[495]: (175940456, False)
In [496]: x[50,:][None,:].__array_interface__['data']
Out[496]: (175940456, False)
Czy możesz podać przykład oczekiwanego wejścia i wyjścia? Czy chcesz uzyskać tablicę 1D lub tablicę 2D? –
Oczywiście! Załóżmy, że mam tablicę typu 'np.ones ((2,40))'. Z tej tablicy chcę wyciąć cały wiersz w postaci 'np.array ((1,40)). Wynik powinien być tablicą 2d – neurotronix
Użyj np.newaxis lub None, aby wstawić nową oś –