2012-04-17 34 views
12

Sono nuovo alla programmazione e ho bisogno di un programma, in grado di selezionare tutte le righe dispari e tutte le colonne pari di un array Numpy allo stesso tempo in un codice. Ecco quello che ho provato:Python - Numpy: Come posso selezionare simultaneamente tutte le righe dispari e tutte le colonne pari di un array

>In [78]: a 

>Out[78]: 
>array([[ 1, 2, 3, 4, 5], 
>  [ 6, 7, 8, 9, 10], 
>  [11, 12, 13, 14, 15], 
>  [16, 17, 18, 19, 20]]) 
> 
>In [79]: for value in range(a.shape[0]): 
>  if value %2 == 0: 
>  print a[value,:] 

>[1 2 3 4 5] 
>[11 12 13 14 15] 
> 
>In [82]: for value in range(a.shape[1]): 
> if value %2 == 1: 
>  print a[:,value] 

>[ 2 7 12 17] 
>[ 4 9 14 19] 

Ho letto qualcosa con "(: anche)" Ma non so in modo wich ho potuto usarlo. grazie per il tuo aiuto.

Han

+2

si può essere più chiaro su ciò che l'output desiderato è? – jterrace

risposta

44

Diciamo che avete questa matrice, x:

>>> import numpy 
>>> x = numpy.array([[ 1, 2, 3, 4, 5], 
... [ 6, 7, 8, 9, 10], 
... [11, 12, 13, 14, 15], 
... [16, 17, 18, 19, 20]]) 

Per ottenere tutte le altre righe dispari, come lei ha citato sopra:

>>> x[::2] 
array([[ 1, 2, 3, 4, 5], 
     [11, 12, 13, 14, 15]]) 

per ottenere ogni altra anche colonna , come lei ha menzionato sopra:

>>> x[:, 1::2] 
array([[ 2, 4], 
     [ 7, 9], 
     [12, 14], 
     [17, 19]]) 

Quindi, combinando insieme i rendimenti:

>>> x[::2, 1::2] 
array([[ 2, 4], 
     [12, 14]]) 
+0

Poiché gli array di numpy sono indicizzati per zero, credo che tu stia suggerendo di ottenere le righe pari e le colonne dispari. – intdt

Problemi correlati