que tienen una matriz que podría tener este aspecto:filas eliminación en la matriz numpy
ANOVAInputMatrixValuesArray = [[ 0.96488889, 0.73641667, 0.67521429, 0.592875,
0.53172222], [ 0.78008333, 0.5938125, 0.481, 0.39883333, 0.]]
Tenga en cuenta 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 llene, y los ceros se ubicarán en filas diferentes cada vez.
consigo el número de elementos no nulos de cada fila con la siguiente línea de código:
NumNonzeroElementsInRows = (ANOVAInputMatrixValuesArray != 0).sum(1)
para la matriz anterior, NumNonzeroElementsInRows
contiene: [5 4]
Los cinco indica que todos los valores posibles en la fila 0 son distintos de cero, mientras que los cuatro indican que uno de los valores posibles en la fila 1 es cero.
Por lo tanto, estoy tratando de utilizar 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, no parece este código para hacer nada, a pesar de hacer un montón de comandos de impresión indica que todas las variables parecen estar poblar correctamente que conduce hasta el código.
Debe haber alguna manera fácil de simplemente "eliminar cualquier fila que contenga un valor cero".
¿Alguien puede mostrarme qué código escribir para lograr esto?
un poco más simple: p [~ (p == 0) .any (1)] o más explícito para las filas: p [~ (p == 0) .any (1),:] – user333700
@ user333700 - Esa debería ser una respuesta - ¡definitivamente obtendrías mi voto! 'any' es mucho más claro que' sum' en este uso. – mtrw