Seite 1 von 1

Matrix befüllen

Verfasst: Dienstag 4. Mai 2021, 20:21
von Mark288

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?

Re: Matrix befüllen

Verfasst: Mittwoch 5. Mai 2021, 09:30
von Sirius3
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

Re: Matrix befüllen

Verfasst: Mittwoch 5. Mai 2021, 10:33
von einfachTobi
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.