vectores una tutorial multiplicacion matriz matrices elementos columna añadir agregar python numpy

python - tutorial - Añade una matriz NumPy a una matriz NumPy



multiplicacion de matrices python numpy (6)

Tengo un numpy_array. Algo como [ abc ] .

Y luego quiero agregarlo a otra matriz NumPy (al igual que creamos una lista de listas). ¿Cómo creamos una matriz de matrices NumPy que contienen matrices NumPy?

Traté de hacer lo siguiente sin suerte

>>> M = np.array([]) >>> M array([], dtype=float64) >>> M.append(a,axis=0) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: ''numpy.ndarray'' object has no attribute ''append'' >>> a array([1, 2, 3])


Bueno, el mensaje de error lo dice todo: las matrices NumPy no tienen un método append() . Sin embargo, hay una función gratuita numpy.append() :

numpy.append(M, a)

Esto creará una nueva matriz en lugar de mutar M en su lugar. Tenga en cuenta que usar numpy.append() implica copiar ambas matrices. Obtendrá un código de mejor rendimiento si usa matrices NumPy de tamaño fijo.


En realidad, uno siempre puede crear una lista ordinaria de matrices numpy y convertirla más tarde.

In [1]: import numpy as np In [2]: a = np.array([[1,2],[3,4]]) In [3]: b = np.array([[1,2],[3,4]]) In [4]: l = [a] In [5]: l.append(b) In [6]: l = np.array(l) In [7]: l.shape Out[7]: (2, 2, 2) In [8]: l Out[8]: array([[[1, 2], [3, 4]], [[1, 2], [3, 4]]])


Puede usar numpy.append() ...

import numpy B = numpy.array([3]) A = numpy.array([1, 2, 2]) B = numpy.append( B , A ) print B > [3 1 2 2]

Esto no creará dos matrices separadas, sino que agregará dos matrices en una única matriz dimensional.


Si entiendo tu pregunta, aquí hay una manera. Digamos que tienes:

a = [4.1, 6.21, 1.0]

así que aquí hay un código ...

def array_in_array(scalarlist): return [(x,) for x in scalarlist]

Lo que lleva a:

In [72]: a = [4.1, 6.21, 1.0] In [73]: a Out[73]: [4.1, 6.21, 1.0] In [74]: def array_in_array(scalarlist): ....: return [(x,) for x in scalarlist] ....: In [75]: b = array_in_array(a) In [76]: b Out[76]: [(4.1,), (6.21,), (1.0,)]


Sven lo dijo todo, solo ten mucho cuidado debido a los ajustes de tipo automáticos cuando se llama a append.

In [2]: import numpy as np In [3]: a = np.array([1,2,3]) In [4]: b = np.array([1.,2.,3.]) In [5]: c = np.array([''a'',''b'',''c'']) In [6]: np.append(a,b) Out[6]: array([ 1., 2., 3., 1., 2., 3.]) In [7]: a.dtype Out[7]: dtype(''int64'') In [8]: np.append(a,c) Out[8]: array([''1'', ''2'', ''3'', ''a'', ''b'', ''c''], dtype=''|S1'')

Como ve en base a los contenidos, el tipo de letra pasó de int64 a float32, y luego a S1


In [1]: import numpy as np In [2]: a = np.array([[1, 2, 3], [4, 5, 6]]) In [3]: b = np.array([[9, 8, 7], [6, 5, 4]]) In [4]: np.concatenate((a, b)) Out[4]: array([[1, 2, 3], [4, 5, 6], [9, 8, 7], [6, 5, 4]])

o esto:

In [1]: a = np.array([1, 2, 3]) In [2]: b = np.array([4, 5, 6]) In [3]: np.vstack((a, b)) Out[3]: array([[1, 2, 3], [4, 5, 6]])