2008-10-09 32 views
91

Cómo puedo contar la cantidad de elementos en una matriz, porque contrariamente a la lógica array.count (cadena) no cuenta todos los elementos de la matriz, solo busca el número de veces que aparece la cadena .Contando elementos de matriz en Python

+0

Esto no es realmente un duplicado de elementos de conteo en una lista, porque una matriz podría ser de mayor dimensión, ¿no? El 'len()' de una matriz no es la cantidad de elementos en la matriz a menos que la matriz sea 1D. Podría argumentar que una lista de listas también es más dimensional, pero hay una precedencia más clara para la lista de nivel superior. Para esta lista de nivel superior, la cantidad de elementos es simplemente 'len()' porque fundamentalmente es 1D. –

Respuesta

212

El método len() devuelve la cantidad de elementos en la lista.

Sintaxis:

len(myArray) 

Ej:

myArray = [1, 2, 3] 
len(myArray) 

Salida:

3 

+0

¿Puede explicar su respuesta;) –

+0

Esto solo funciona para una lista o matriz plana, unidimensional, pero 'print len ​​([[0, 0], [0, 0]])' sale como 2, al igual que 'len (array ([[0, 0], [0, 0]]))'. –

3

O

myArray.__len__() 

si quiere ser oopy; "len (myArray)" es mucho más fácil de escribir! :)

+2

Eso es un Yuk definido. – UnkwnTech

+0

@Gregg Lind, Esto no introduce una condición de carrera. (Sin embargo, es tan asqueroso como parece.) –

+0

¡La condición de carrera fue entre yo y otro afiche! Tenga en cuenta mi * aún más respuesta abajo * abajo! –

24

len es una función incorporada que llama a la función miembro del objeto contenedor dado __len__ para obtener la cantidad de elementos en el objeto.

Las funciones encerradas con doble guión bajo son generalmente "métodos especiales" que implementan una de las interfaces estándar en Python (contenedor, número, etc.). Los métodos especiales se utilizan a través del azúcar sintáctico (creación de objetos, indexación y división de contenedores, acceso a atributos, funciones incorporadas, etc.).

El uso de obj.__len__() no sería la forma correcta de usar el método especial, pero no veo por qué los otros fueron modificados tanto.

+0

Especialmente cuando los dos mencionamos que era mala forma. Comprender qué duración "realmente" hace es importante por derecho propio. –

1

Antes de ver esto, pensé para mis adentros, "¡Tengo que hacer una forma de hacer esto!"

for tempVar in arrayName: tempVar+=1 

Y luego pensé: "Debe haber una manera más simple de hacer esto". y yo tenía razón

len(arrayName)

11

Si tiene una matriz multidimensional, len() no podría darle el valor que busca. Por ejemplo:

a = np.arange(10).reshape(2, 5) 
print len(a) == 2 

Este bloque de código devolverá true, que le dice el tamaño de la matriz es de 2. Sin embargo, hay en realidad, 10 elementos de esta matriz 2D. En el caso de matrices multidimensionales, len() le da la longitud de la primera dimensión de la matriz es decir

len(a) == np.shape(a)[0] 

Para obtener el número de elementos en una matriz multidimensional de forma arbitraria:

size = 1 
for dim in np.shape(a): size *= dim 
+0

Esto parece realmente útil, pero ¿cómo se inicializa np como? Si lo inicializo como una lista vacía, entonces python dice que el objeto 'list' no tiene ningún atributo 'arrange'' – russellmania

+1

@russellmania 'import numpy as np' – dexteritas