Ho un array che potrebbe assomigliare a questo:
ANOVAInputMatrixValuesArray = [[ 0.96488889, 0.73641667, 0.67521429, 0.592875,
0.53172222], [ 0.78008333, 0.5938125, 0.481, 0.39883333, 0.]]
Notare che una delle righe ha un valore zero alla fine. Voglio eliminare qualsiasi riga che contiene uno zero, mantenendo qualsiasi riga che contiene valori diversi da zero in tutte le celle.
Ma l'array avrà un numero diverso di righe ogni volta che viene popolato e gli zeri saranno posizionati in righe diverse ogni volta.
Ottengo il numero di elementi diversi da zero in ogni riga con la seguente riga di codice:
NumNonzeroElementsInRows = (ANOVAInputMatrixValuesArray != 0).sum(1)
Per la matrice sopra, NumNonzeroElementsInRows
contiene: [5 4]
Il cinque indica che tutti i possibili valori nella riga 0 sono diversi da zero, mentre il quattro indica che uno dei possibili valori nella riga 1 è uno zero.
Pertanto, sto cercando di utilizzare le seguenti righe di codice per trovare ed eliminare righe che contengono valori zero.
for q in range(len(NumNonzeroElementsInRows)):
if NumNonzeroElementsInRows[q] < NumNonzeroElementsInRows.max():
p.delete(ANOVAInputMatrixValuesArray, q, axis=0)
Ma per qualche motivo, questo codice sembra non fare nulla, anche se l'esecuzione di molti comandi di stampa indica che tutte le variabili sembrano essere popolate correttamente fino al codice.
Ci deve essere un modo semplice per "eliminare qualsiasi riga che contiene un valore zero".
Qualcuno può mostrarmi quale codice scrivere per ottenere questo risultato?
numpy.delete(x, index)
non funzionasse.