2013-07-21 10 views
15

Se ho un array x, e faccio un np.repeat(x,2), sto praticamente duplicando l'array.Come rimuovere ogni altro elemento di una matrice in python? (L'inverso di np.repeat()?)

>>> x = np.array([1,2,3,4])  
>>> np.repeat(x, 2) 
array([1, 1, 2, 2, 3, 3, 4, 4]) 

Come posso fare l'opposto in modo che finisca con l'array originale?

Dovrebbe funzionare anche con una serie casuale y:

>>> y = np.array([1,7,9,2,2,8,5,3,4]) 

Come posso eliminare ogni altro elemento in modo che io alla fine con il seguente?

array([7, 2, 8, 3]) 

risposta

33

y[1::2] dovrebbe fare il lavoro. Qui il secondo elemento è scelto indicizzando con 1 e poi preso a un intervallo di 2.

+0

se si desidera che y contenga questa informazione, dovrebbe essere y = y [1 :: 2] – rafee

0

Avevo problemi con cosa se si chiedesse l'input di un array da un utente?

in modo da rendere una funzione ha aiutato molto:

def remove_every_other(my_list): 
    return my_list[::2] 
    pass 

Questo mi ha aiutato a capire che se un utente dovesse entrare in un array, abbiamo potuto gestire chiamando questa funzione.

Problemi correlati