|
Autor |
Python: Werte in np.array ersetzen |
|
Sammy93
Ehemals Aktiv  Dabei seit: 24.03.2018 Mitteilungen: 45
 | Themenstart: 2019-03-24
|
Hallo,
ich habe eine Liste erstellt mit list=[1,3,2,4]. Nun soll folgendes überprüft werden:
Steht an Position 1 der Liste die Zahl 1? Wenn ja, füge 1 in ein Array hinzu, ansonsten 0.
Steht an Position 2 der Liste die Zahl 1? Wenn ja, füge 1 in ein Array hinzu, ansonsten 0.
.........
Steht an Position 1 der Liste die Zahl 2? Wenn ja, füge 1 in ein Array hinzu, ansonsten 0.
Steht an Position 2 der Liste die Zahl 2? Wenn ja, füge in ein Array hinzu, ansonsten 0.
.........
Das ganze soll so lange gehen, bis alle Zahlen in der Liste abgearbeitet sind.
Das Ergebnis soll dann ein 4x4 Array sein und würde so aussehen:
[[1. 0. 0. 0.]
[0. 0. 1. 0.]
[0. 1. 0. 0.]
[0. 0. 0. 1.]]
Ich habe bisher folgendes probiert:
\sourceon python
import numpy as np
list=[1,3,2,4]
k=np.zeros(shape=(4,4))
for i, j in enumerate(list):
if j==1:
np.append(1,k)
else:
np.append(0,k)
if j==2:
np.append(1,k)
else:
np.append(0,k)
\sourceoff
Allerdings erhalte ich nur ein Array mit Nullen wegen np.zeros und np.append funktioniert nicht. Außerdem möchte ich nicht, dass ich j==1, j==2, j==3..... jeweils einzeln eingeben muss.
Hat jemand eine Idee, wie ich das Problem besser umsetzen könnte?
Vielen Dank.
|
Profil
|
DerEinfaeltige
Senior  Dabei seit: 11.02.2015 Mitteilungen: 3160
 | Beitrag No.1, eingetragen 2019-03-24
|
Quick and Dirty ginge das bspw. so:
\sourceon Python
M=lambda L: np.array([[1 if L[i]==k+1 else 0 for i in range(len(L))] for k in range(len(L))])
M([1,3,2,4])
array([[1, 0, 0, 0],
[0, 0, 1, 0],
[0, 1, 0, 0],
[0, 0, 0, 1]])
\sourceoff
|
Profil
|
Sammy93
Ehemals Aktiv  Dabei seit: 24.03.2018 Mitteilungen: 45
 | Beitrag No.2, vom Themenstarter, eingetragen 2019-03-24
|
Hallo,
vielen Dank für die schnelle Antwort. Ich wollte gerade den Code ausprobieren, aber wie bekomme ich das Ergebnis, also das Array denn angezeigt?
Entschuldige, aber ich bin noch Anfänger.
|
Profil
|
matph
Senior  Dabei seit: 20.11.2006 Mitteilungen: 5506
Wohnort: A
 | Beitrag No.3, eingetragen 2019-03-24
|
Hallo,
\quoteon(2019-03-24 12:56 - Sammy93 in Beitrag No. 2)
Hallo,
vielen Dank für die schnelle Antwort. Ich wollte gerade den Code ausprobieren, aber wie bekomme ich das Ergebnis, also das Array denn angezeigt?
Entschuldige, aber ich bin noch Anfänger.
\quoteoff
Das Array könntest du wie folgt formatieren :-)
\sourceon Python
print('\n'.join([' '.join(['{:2}'.format(item) for item in row]) for row in k]))
\sourceoff
--
mfg
matph
|
Profil
|
Sammy93
Ehemals Aktiv  Dabei seit: 24.03.2018 Mitteilungen: 45
 | Beitrag No.4, vom Themenstarter, eingetragen 2019-03-24
|
Hallo,
ah super, vielen Dank für die Antwort. Das probiere ich gleich mal aus.
|
Profil
| Folgende Antworten hat der Fragesteller vermutlich noch nicht gesehen. Er/sie war noch nicht wieder auf dem Matheplaneten |
__blackjack__
Wenig Aktiv  Dabei seit: 23.09.2021 Mitteilungen: 81
 | Beitrag No.5, eingetragen 2021-09-26
|
Alterntaive mit weniger Schleifendurchläufen in Python-Code und ohne die ganze Datenstruktur vorher als verschachtelte Python-Listen aufzubauen:
\sourceon python
In [236]: liste
Out[236]: [1, 3, 2, 4]
In [237]: A = np.zeros((4, 4))
In [238]: for i, value in enumerate(liste):
...: A[value - 1, i] = 1
...:
In [239]: A
Out[239]:
array([[1., 0., 0., 0.],
[0., 0., 1., 0.],
[0., 1., 0., 0.],
[0., 0., 0., 1.]])
\sourceoff
|
Profil
|
Sammy93 wird per Mail über neue Antworten informiert. |
|
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2022 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen. Lesen Sie die
Nutzungsbedingungen,
die Distanzierung,
die Datenschutzerklärung und das Impressum.
[Seitenanfang]
|