Cancellazione non banale di elementi da array Python

di Anonimizzato22730 il
5 risposte
Ciao a tutti, ho appena scoperto questo forum
Io ho un problema con un esercizio che mi sta dando filo da torcere. Ho i seguenti array:
x=np.array([0,0,0,0,0,1,0,0]   
y=np.array([21,32,45,26,72,88,95])
dove gli elementi di y corrispondono solamente agli elementi nulli di x. Cioè:

x[0] --> 21=y[0]
x[1] --> 32=y[1]
x[2] --> 45=y[2]
x[3] --> 26=y[3]
x[4] --> 72=y[4]
x[6] --> 88=y[5]
x[7] --> 95=y[6]

Come si nota, gli indici di y sono consecutivi mentre gli indici di x no perchè c'è un elemento non nullo (precisamente x[5]).
Io voglio cambiare x[2] e x[6] in 1, ossia
indici=np.array([2,6])
x[indici]=1
in modo che l'array x diventi
array([0,0,1,0,0,1,1,0]
Dall'array y devo togliere gli elementi corrispondenti a x[2] e x[6] (perchè questi sono diventi 1), ossia voglio che y sia:
y=[21,32,26,72,95]
Non ho la più pallida idea di come ottenere quest'ultimo passaggio. Grazie in anticipo

5 Risposte

  • Perché usi due array separati? Perché non usi una semplice lista con le coppie di valori?
  • Perchè l’array y esiste già e lo devo soltanto modificare come è scritto lì...
  • Per curiosità, l'esercizio da dove l'hai preso?
    Ci puoi dare anche il testo completo?
  • L’esercizio non è scritto da nessuno parte. So che devo fare questo perché l array y è scritto così e devo modificarlo in quel modo. Ho chiesto nuovamente e l’esempio che ho scritto nel primo post è corretto. Anche a me inizialmente sembrava una follia ma quello che devo fare è quello
  • Magari è tardi, visto che il messaggio è di novembre 2017, ma penso che si debba per forza usare un array Y intermedio, e mettere 'None' come valore quando x[n]==1, poi ricreare il vettore y ex-novo con
    y = [z for z in y_intermedio if z is not None] 
    Altre strade non ne vedo, perché anche se si facesse un ciclo su x, non si può sapere se il corrispondente y è già stato eliminato o no.
Devi accedere o registrarti per scrivere nel forum
5 risposte