rendere l'indice una fetta, lista o un array
X[[0],:]
X[0:1,4]
Ma non c'è niente di sbagliato con reshape
a parte il fatto che essa richiede la digitazione. Non è lento. [None,:]
è una bella mano corta per questo.
L'utilizzo di un indice di elenco può essere più breve, ma lo fa produrre una copia (una più o meno?) Ed è più lento
Per array di (100,100)
intero:
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
Un test per la copia è quello di confrontare il puntatore del buffer di dati con l'originale.
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)
È possibile fornire un esempio di input e output previsti, per favore? Vuoi ottenere un array 1D o un array 2D? –
Sicuro! Diciamo che ho una matrice come 'np.ones ((2,40))'. Da questo array voglio tagliare un'intera riga sotto forma di 'np.array ((1,40))'. Il risultato dovrebbe essere un array 2d – neurotronix
Utilizzare np.newaxis o None per inserire un nuovo asse –