Siempre que no sea una matriz irregular, esto es ideal.
Makoto
yo, quiero encontrar la suma de todos los elementos en esa matriz 2D def sum1 (entrada): suma = 0 para la fila en el rango (len (entrada) -1): para col en el rango (len (entrada [0]) - 1 ): suma = suma + entrada [fila] [col] retorno suma imprimir suma1 ([[1, 2], [3, 4], [5, 6]]) Muestra 4 en lugar de 21 (1 + 2 + 3 + 4 + 5 + 6 = 21). Donde esta mi error
Ronaldinho Learn Coding
1
Hay una solución más simple: suma (suma (x) para x en la entrada)
Óscar López
1
@LongBodie: El error es que resta 1 de las longitudes donde no debería. Range(n)ya da 0,1, ..., n-1 .
Junuxx
39
Puede utilizar numpy.shape.
import numpy as np
x = np.array([[1, 2],[3, 4],[5, 6]])
¡Genial, esto era exactamente lo que necesitaba! En mi caso, puedo contar todos los elementos de una lista hasta el segundo grado: sum (len (x) if isinstance (x, list) else 1 for x in some_list)
Respuestas:
Me gusta esto:
numrows = len(input) # 3 rows in your example numcols = len(input[0]) # 2 columns in your example
Suponiendo que todas las sublistas tengan la misma longitud (es decir, no es una matriz irregular).
fuente
Range(n)
ya da 0,1, ..., n-1 .Puede utilizar
numpy.shape
.import numpy as np x = np.array([[1, 2],[3, 4],[5, 6]])
Resultado:
>>> x array([[1, 2], [3, 4], [5, 6]]) >>> np.shape(x) (3, 2)
El primer valor de la tupla es el número de filas = 3; El segundo valor de la tupla es el número de columnas = 2.
fuente
Además, la forma correcta de contar el número total de artículos sería:
sum(len(x) for x in input)
fuente
Suponiendo que la entrada [fila] [col],
rows = len(input) cols = map(len, input) #list of column lengths
fuente
También puede usar np.size (a, 1), 1 aquí está el eje y esto le dará el número de columnas
fuente
asumiendo
input[row][col]
rows = len(input) cols = len(list(zip(*input)))
fuente