Matrices 2D en Python



arrays list (6)

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.

https://src-bin.com

¿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.


Answer #1

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.


Answer #2

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.


Answer #3

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).


Answer #4
>>> 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]]
>>>

Answer #5
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





multidimensional-array