abs python arrays list tuples multidimensional-array

abs - lambda python



Matrices 2D en Python (8)

¿Cuál es la mejor manera de crear matrices 2D en Python?

Lo que quiero es querer almacenar valores como este:

X , Y , Z

para que acceda a datos como X[2],Y[2],Z[2] o X[n],Y[n],Z[n] donde n es variable. Al principio no sé qué tan grande sería, así que me gustaría agregar valores al final.


Dependiendo de lo que estés haciendo, es posible que en realidad no tengas una matriz 2-D.

El 80% del tiempo tiene una lista simple de "objetos similares a filas", que pueden ser secuencias correctas.

myArray = [ (''pi'',3.14159,''r'',2), (''e'',2.71828,''theta'',.5) ] myArray[0][1] == 3.14159 myArray[1][1] == 2.71828

Más a menudo, son instancias de una clase o un diccionario o un conjunto o algo más interesante que no tenías en tus idiomas anteriores.

myArray = [ {''pi'':3.1415925,''r'':2}, {''e'':2.71828,''theta'':.5} ]

20% de las veces tienes un diccionario, marcado por un par

myArray = { (2009,''aug''):(some,tuple,of,values), (2009,''sep''):(some,other,tuple) }

Rara vez, ¿realmente necesitarás una matriz?

Tienes una gran cantidad de clases de colección en Python. Las probabilidades son buenas de que tengas algo más interesante que una matriz.


En Python uno usualmente usa lists para este propósito. Las listas se pueden anidar arbitrariamente, lo que permite la creación de una matriz 2D. No todas las sublistas deben ser del mismo tamaño, por lo que resuelve su otro problema. Echa un vistazo a los ejemplos a los que me he vinculado.


Por favor considere los siguientes códigos:

from numpy import zeros scores = zeros((len(chain1),len(chain2)), float)


Si le preocupa la huella de memoria, la biblioteca estándar de Python contiene el módulo de matriz ; estas matrices contienen elementos del mismo tipo.


Si quieres hacer un trabajo serio con arreglos, entonces debes usar la biblioteca numpy . Esto le permitirá, por ejemplo, hacer la multiplicación de vectores y la matriz, y para matrices grandes es mucho más rápido que las listas de Python.

Sin embargo, Numpy requiere que el tamaño esté predefinido. Por supuesto, también puede almacenar matrices numpy en una lista, como:

import numpy as np vec_list = [np.zeros((3,)) for _ in range(10)] vec_list.append(np.array([1,2,3])) vec_sum = vec_list[0] + vec_list[1] # possible because we use numpy print vec_list[10][2] # prints 3

Pero dado que tus matrices numpy son bastante pequeñas, creo que hay algo de sobrecarga en comparación con el uso de una tupla. Todo depende de tus prioridades.

Ver también esta otra question , que es bastante similar (aparte del tamaño variable).


Sugeriría que uses un diccionario como ese:

arr = {} arr[1] = (1, 2, 4) arr[18] = (3, 4, 5) print(arr[1]) >>> (1, 2, 4)

Si no está seguro de que se haya definido una entrada en el diccionario, necesitará un mecanismo de validación cuando llame a "arr [x]", por ejemplo, try -example.


>>> a = [] >>> for i in xrange(3): ... a.append([]) ... for j in xrange(3): ... a[i].append(i+j) ... >>> a [[0, 1, 2], [1, 2, 3], [2, 3, 4]] >>>


x=list() def enter(n): y=list() for i in range(0,n): y.append(int(input("Enter "))) return y for i in range(0,2): x.insert(i,enter(2)) print (x)

Aquí hice la función para crear una matriz 1-D y se inserta en otra matriz como un miembro de la matriz. múltiples matrices de 1-d dentro de una matriz, ya que el valor de ny yo cambia u crea matrices multidimensionales