Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » Python: Werte in np.array ersetzen
Autor
Universität/Hochschule Python: Werte in np.array ersetzen
Sammy93
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
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 Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 3000
  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
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
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 Letzter Besuch: vor mehr als 3 Monaten
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
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
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__
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 23.09.2021
Mitteilungen: 40
  Beitrag No.5, eingetragen 2021-09-26 23:31

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.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 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]