webentwicklung-frage-antwort-db.com.de

Wie man eine Liste aus Numpy Matrix in Python erstellt

Ich verwende die dot () - Funktion von numpy, um eine Matrix von 3x3 mit einem numpy.array von 1x3 zu multiplizieren. Die Ausgabe ist zum Beispiel so:

[[0,16666667 0,66666667 0,16666667]]

welches ist vom Typ:

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

wie kann ich das in eine Liste umwandeln. Da ich weiß, dass das Ergebnis immer eine Matrix aus 1x3 sein wird, sollte es zu einer Liste konvertiert werden, da ich später in der Lage sein muss, den Pearson-Abstand zweier dieser Listen zu berechnen.

Also zusammenfassend: Wie kann ich aus dieser Matrix eine Liste erstellen?

38
Javaaaa

Möglicherweise ist dies nicht der optimale Weg, aber es funktioniert:

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

oder

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

oder

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

Wenn a Ihre Matrix ist, versuchen Sie es

a.ravel().tolist()

sie müssen es jedoch nicht in eine Liste umwandeln, um darüber zu iterieren.

15
Sven Marnach

Verwenden Sie die Methode tolist () für das Matrixobjekt:

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

Ein anderer Weg:

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

Versuchen Sie diesen simplen Ansatz. Es funktioniert mit 1D-Arrays, weiß nicht mit höheren Abmessungen.

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
1
FerYepes

Ich denke, getA1() kann den Job machen.
Aus der Dokumentation:

getA1 () 

Kehre als abgeflachter ndarray zurück.

Entspricht np.asarray (x) .ravel ()

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

1
Robert Ribas

warum nicht einfach:

list(a.flat)

zum Beispiel:

>>> 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]
1
yourstruly
m = numpy.matrix([[ 0.16666667, 0.66666667, 0.16666667]])
a = numpy.array(m)[0]

for i in a:
    print i

führt in

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

Dieses Code-Snippet wendet die integrierte Funktion "float" - die etwas in eine Fließkommazahl konvertiert - auf jedes Element von a ein. Da das erste Element von a ein Array selbst ist, muss es transponiert werden, damit jede Zahl ein Element von a sich selbst wird. a.transpose () entspricht in diesem Beispiel der np.matrix ([[1], [2], [3], [4]]).

0
user7358

Ich kam hierher auf der Suche nach einer Möglichkeit, numpy-Matrizen in typische 2D-Listen zu konvertieren.

Für eine numpy Matrix m:

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

Wenn Sie nur eine eindimensionale Liste aus einer 1 x n-Matrix m wünschen:

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