Matrix befüllen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Mark288
User
Beiträge: 2
Registriert: Freitag 4. Dezember 2020, 15:26

Code: Alles auswählen

import numpy
matrix =  numpy.zeros((5, 7))



def f(gew, wer, n):


    for i in range(0,7,1):
        if i < gew[n]:
            matrix[n][i]=0
        else:
            matrix[n][i]=wer[n]
            n = n + 1


    print(matrix)


gewicht = [2,2,6,5,4]
wert    = [6,3,5,4,6]
n = 0
f(gewicht, wert, n)
Hallo ich habe ein Problem beim befüllen dieser Matrix.
Die beiden Listen gewicht und wert stellen ein Item dar, item 1 hat zb einen Wert von 6 bei einem Gewicht von 2.
die Matrix ist so gedacht: Spalten stehen fürs Gewicht von 0 bis 6
und jede Zeile steht für ein Item.
Ich würde nun gerne Zeilenweise durchgehen und von jedem Item den entsprechenden Wert in die Matrix eintragen, wenn für das Gewicht zum ersten mal Platz ist.
Bsp [0][2] würde für Item 1, die 6 eingetragen werden.
Bis zur 6 schaffe ich es noch, dann komme ich allerdings nicht mehr zurück in Spalte 2. Wie könnte ich das am besten lösen?
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

Benutze keine globalen Variablen oder kryptische Abkürzungen. Warum gew und wer?
Was soll die Funktion f machen? Wenn du dafür einen guten Namen findest, dann weißt Du auch gleich, um was es geht.
Ich verstehe das mit dem 》ersten mal Platz《 nicht. Jedes Item hat doch seine eigene Spalte.

Code: Alles auswählen

matrix = numpy.zeros(len(gewichte), max(gewichte) + 1)
matrix[list(range(len(gewichte)), gewichte] = werte
einfachTobi
User
Beiträge: 491
Registriert: Mittwoch 13. November 2019, 08:38

Zwei kleine Flüchtigkeitsfehler in Sirius3s Code korrigiert:

Code: Alles auswählen

matrix = numpy.zeros((len(gewichte), max(gewichte) + 1))
matrix[list(range(len(gewichte))), gewichte] = werte
Ansonsten gehts mir wie ihm.
Antworten