una matriz matrices inversa funcion crear con arreglos arreglo array python list matrix numpy

matriz - Cómo hacer una lista desde Numpy Matrix en Python



matriz inversa python (10)

Creo que getA1() puede hacer el trabajo.
De la documentación:

getA1 ()

Vuélvete como un ndarray aplanado.

Equivalente a np.asarray (x) .ravel ()

De https://docs.scipy.org/doc/numpy/reference/generated/numpy.matrix.getA1.html

Utilizo la función punto () de numpy para multiplicar una matriz de 3x3 con numpy.array de 1x3. El resultado es, por ejemplo, esto:

[[0.16666667 0.66666667 0.16666667]]

que es de tipo:

<class ''numpy.matrixlib.defmatrix.matrix''>

¿Cómo puedo convertir esto a una lista? Porque sé que el resultado siempre será una matriz de 1x3, por lo que debe ser convertida en una lista porque necesito poder recorrerla más tarde para calcular la distancia de dos de esas listas.

Entonces, para resumir: ¿cómo puedo hacer una lista a partir de esta matriz?


De otra manera:

>>> import numpy as np >>> m = np.matrix([1,2,3]) >>> np.array(m).flatten().tolist() [1,2,3]


Pruebe este enfoque simplista. Funciona con matrices 1D, no sé con dimensiones más altas.

import mumpy as np # to create a numpy array example a = np.array([1,2.5,3]) # your 1D numpy array b = [i for i in a] # your list out of the original numpy array


Puede que no sea la forma óptima de hacerlo, pero los siguientes trabajos:

a = numpy.matrix([[ 0.16666667, 0.66666667, 0.16666667]]) list(numpy.array(a).reshape(-1,))

o

numpy.array(a).reshape(-1,).tolist()

o

numpy.array(a)[0].tolist()


Si a es tu matriz, prueba

a.ravel().tolist()

pero no necesita convertirlo en una lista para iterar sobre él.


Use el método tolist() en el objeto de matriz:

>>> import numpy >>> m = numpy.matrix([1, 2, 3]) >>> type(m) <class ''numpy.core.defmatrix.matrix''> >>> m.tolist() [[1, 2, 3]]


Vine aquí buscando una manera de convertir las matrices numpy a las típicas listas 2D.

Para una matriz numpy m:

my_2d_list = map(list, list(m.A))

Si solo quieres una lista unidimensional de una matriz x 1 m:

my_1d_list = list(list(m.A)[0])


por qué no simple:

list(a.flat)

por ejemplo:

>>> import numpy as np >>> a = np.matrix([[ 0.16666667, 0.66666667, 0.16666667]]) >>> a matrix([[ 0.16666667, 0.66666667, 0.16666667]]) >>> a.flat <numpy.flatiter object at 0x0000000002DE8CC0> >>> a.flat.tolist() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: ''numpy.flatiter'' object has no attribute ''tolist'' >>> list(a.flat) [0.16666666999999999, 0.66666667000000002, 0.16666666999999999]


import numpy as np a = np.matrix([[1,2,3,4]]) b = map(float, a.transpose())

Este fragmento de código aplicará la función incorporada "flotante" - que convierte algo a un número de punto flotante - a cada elemento de a . Como el primer elemento de a es una matriz en sí misma, debe transponerse, de modo que cada número se convierta en un elemento de sí mismo. a.transpose () es equivalente a np.matrix ([[1], [2], [3], [4]]) en este ejemplo.


m = numpy.matrix([[ 0.16666667, 0.66666667, 0.16666667]]) a = numpy.array(m)[0] for i in a: print i

resultados en

0.16666667 0.66666667 0.16666667