No puedo entender cómo usar una matriz o matriz de la forma en que normalmente usaría una lista. Quiero crear una matriz vacía (o matriz) y luego agregarle una columna (o fila) a la vez.
Por el momento, la única manera que puedo encontrar para hacer esto es:
mat = None
for col in columns:
if mat is None:
mat = col
else:
mat = hstack((mat, col))
Mientras que si fuera una lista, haría algo como esto:
list = []
for item in data:
list.append(item)
¿Hay alguna manera de usar ese tipo de notación para matrices o matrices NumPy ?
.empty()
significa que uno puede encontrar valores aleatorios en las celdas, pero la matriz se crea más rápido que, por ejemplo, con.zeros()
?Una matriz NumPy es una estructura de datos muy diferente de una lista y está diseñada para usarse de diferentes maneras. Su uso de
hstack
es potencialmente muy ineficiente ... cada vez que lo llama, todos los datos en la matriz existente se copian en una nueva. (Laappend
función tendrá el mismo problema). Si desea construir su matriz columna por columna, es mejor que la mantenga en una lista hasta que termine, y solo luego conviértala en una matriz.p.ej
item
puede ser una lista, una matriz o cualquier iterable, siempre que cada unoitem
tenga el mismo número de elementos.En este caso particular (
data
es iterativo mantener las columnas de la matriz) simplemente puede usar(También tenga en cuenta que usar
list
como nombre de variable probablemente no sea una buena práctica ya que enmascara el tipo incorporado con ese nombre, lo que puede provocar errores)EDITAR:
Si por alguna razón realmente desea crear una matriz vacía, puede usarla
numpy.array([])
, ¡pero esto rara vez es útil!fuente
np.concatenate()
), puede utilizar:np.empty((0, some_width))
. 0, por lo que su primera matriz no será basura.Para crear una matriz multidimensional vacía en NumPy (por ejemplo, una matriz 2D
m*n
para almacenar su matriz), en caso de que no sepam
cuántas filas agregará y no le importa el costo computacional que mencionó Stephen Simmons (es decir, reconstruir el matriz en cada append), se puede exprimir a 0 la dimensión a la que desea anexar a:X = np.empty(shape=[0, n])
.De esta manera puede usar, por ejemplo (aquí,
m = 5
que asumimos que no sabíamos al crear la matriz vacía, yn = 2
):que te dará:
fuente
Investigué mucho esto porque necesitaba usar un numpy.array como conjunto en uno de mis proyectos escolares y necesitaba que se inicializara vacío ... No encontré ninguna respuesta relevante aquí en Stack Overflow, así que comencé garabateando algo.
El resultado será:
Por lo tanto, puede inicializar directamente una matriz np de la siguiente manera:
Espero que esto ayude.
fuente
a=np.array([])
parece predeterminado afloat64
Puedes usar la función append. Para filas:
Para columnas:
EDITAR
Por supuesto, como se menciona en otras respuestas, a menos que esté haciendo algún procesamiento (por ejemplo, inversión) en la matriz / matriz CADA vez que le agregue algo, simplemente crearía una lista, la agregaría y luego la convertiría en un formación.
fuente
Si no conoce el tamaño final de la matriz, puede incrementar el tamaño de la matriz de esta manera:
0
en la primera línea.numpy.append
Es otra opción. Llamanumpy.concatenate
.fuente
Puede aplicarlo para construir cualquier tipo de matriz, como ceros:
fuente
a= [0] * 5
es la solución simpleAquí hay una solución alternativa para hacer que los numpys se parezcan más a las listas
SALIDA: matriz ([2., 24.])
fuente
Dependiendo de para qué esté usando esto, es posible que deba especificar el tipo de datos (consulte 'dtype' ).
Por ejemplo, para crear una matriz 2D de valores de 8 bits (adecuada para usar como imagen monocroma):
Para una imagen RGB, incluya el número de canales de color en la forma:
shape=(H,W,3)
También puede considerar la inicialización cero con en
numpy.zeros
lugar de usarnumpy.empty
. Ver la nota aquí .fuente
Creo que desea manejar la mayor parte del trabajo con listas y luego usar el resultado como una matriz. Tal vez esta es una manera;
fuente
Creo que puedes crear una matriz vacía vacía como:
Este formato es útil cuando desea agregar una matriz numpy en el bucle.
fuente
Para crear una matriz NumPy vacía sin definir su forma, hay una manera:
1)
privilegiado. porque sabes que usarás esto como numpy.
2)
NumPy convierte esto al tipo np.ndarray después, sin extra
[]
dimionsion
.fuente
Quizás lo que estás buscando es algo como esto:
De esta manera, puede crear una matriz sin ningún elemento. Es similar a:
De esta manera, podrá agregar nuevos elementos a su matriz de antemano.
fuente