Tengo una matriz numpy que contiene:
[1, 2, 3]
Quiero crear una matriz que contenga:
[1, 2, 3, 1]
Es decir, quiero agregar el primer elemento al final de la matriz.
He intentado lo obvio:
np.concatenate((a, a[0]))
Pero me sale un error diciendo ValueError: arrays must have same number of dimensions
No entiendo esto: las matrices son solo matrices 1d.
np.insert([1,2,3], 3, 1)
Respuestas:
append()
crea una nueva matriz que puede ser la matriz anterior con el elemento agregado.Creo que es más normal usar el método adecuado para agregar un elemento:
fuente
a
matriz. Sin embargo, devuelve una nueva matriz modificada. Por lo tanto, sia
se requiere una modificación, sea = numpy.append(a,a[0])
debe utilizar.np.append
utilizanp.concatenate
. Solo se asegura de que el complemento tenga una dimensión. El error OP fue quea[0]
tiene 0 dimensiones.a.append(1)
,a.add(1)
o incluso algo análogo a listas comoa + [1]
Al agregar solo una o una vez de vez en cuando, usar
np.append
en su matriz debería estar bien. El inconveniente de este enfoque es que la memoria se asigna para una matriz completamente nueva cada vez que se llama. Al cultivar una matriz para una cantidad significativa de muestras, sería mejor preasignar la matriz (si se conoce el tamaño total) o agregarla a una lista y convertirla en una matriz después.Usando
np.append
:Usando la lista de Python convirtiendo a una matriz después:
Preasignación de matriz numpy:
Cuando se desconoce el tamaño final, la asignación previa es difícil, intenté realizar la asignación previa en partes de 50, pero no se acercó a usar una lista.
fuente
a[0]
no es una matriz, es el primer elemento dea
y, por lo tanto, no tiene dimensiones.Intente usar en su
a[0:1]
lugar, que devolverá el primer elementoa
dentro de una matriz de un solo elemento.fuente
Prueba esto:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html
concatenar necesita que ambos elementos sean matrices numerosas; sin embargo, un [0] no es una matriz. Por eso no funciona.
fuente
np.concatenate((a, [a[0]]))
. La lista se promoverá automáticamente a un tipo de matriz de todos modos, lo que le ahorrará algo de escritura.Este comando,
no altera la
a
matriz. Sin embargo, devuelve una nueva matriz modificada. Por lo tanto, sia
se requiere una modificación, se debe utilizar lo siguiente.fuente
fuente
Esto puede ser un poco exagerado, pero siempre uso la
np.take
función para cualquier indexación envolvente:fuente
Digamos
a=[1,2,3]
y quieres que sea[1,2,3,1]
.Puede utilizar la función de adición incorporada
Aquí 1 es un int, puede ser una cadena y puede pertenecer o no a los elementos de la matriz. Huellas dactilares:
[1,2,3,1]
fuente
Si desea agregar un elemento, use
append()
a = numpy.append(a, 1)
en este caso agregue el 1 al final de la matrizSi desea insertar un elemento, use
insert()
a = numpy.insert(a, index, 1)
en este caso, puede poner el 1 donde desee, utilizando index para establecer la posición en la matriz.fuente