Tengo una matriz que podría verse así:
ANOVAInputMatrixValuesArray = [[ 0.96488889, 0.73641667, 0.67521429, 0.592875,
0.53172222], [ 0.78008333, 0.5938125, 0.481, 0.39883333, 0.]]
Observe que una de las filas tiene un valor cero al final. Quiero eliminar cualquier fila que contenga un cero, mientras mantengo cualquier fila que contenga valores distintos de cero en todas las celdas.
Pero la matriz tendrá diferentes números de filas cada vez que se rellene, y los ceros se ubicarán en diferentes filas cada vez.
Obtengo el número de elementos distintos de cero en cada fila con la siguiente línea de código:
NumNonzeroElementsInRows = (ANOVAInputMatrixValuesArray != 0).sum(1)
Para la matriz anterior, NumNonzeroElementsInRows
contiene: [5 4]
El cinco indica que todos los valores posibles en la fila 0 son distintos de cero, mientras que el cuatro indica que uno de los valores posibles en la fila 1 es cero.
Por lo tanto, estoy tratando de usar las siguientes líneas de código para buscar y eliminar filas que contienen valores cero.
for q in range(len(NumNonzeroElementsInRows)):
if NumNonzeroElementsInRows[q] < NumNonzeroElementsInRows.max():
p.delete(ANOVAInputMatrixValuesArray, q, axis=0)
Pero por alguna razón, este código no parece hacer nada, a pesar de que hacer muchos comandos de impresión indica que todas las variables parecen estar llenándose correctamente antes del código.
Debe haber una forma sencilla de "eliminar cualquier fila que contenga un valor cero".
¿Alguien puede mostrarme qué código escribir para lograr esto?
numpy.delete(x, index)
no funcionaba.