Tabela gdzie kolumnami i wierszami są zmienne z list, natomiast danymi w tabeli wynik operacji na tych zmiennych.

0

Witam, czy ktoś ma pomysł jak zrobić tabele dwóch zmiennych, która porządkuje wyniki operacji na nich? Stworzyłem dwie listy zmiennych :
#listy zmiennych

for s in numpy.arange(1.9, 10.5, 0.1):
    szerokosci.append(round(s + 0.1, 1))
for g in numpy.arange(1.9, 4.2, 0.1):
    glebokosci.append(round(g + 0.1, 1))

#następnie wykonuje operacje które podstawiają wartości w pętli:
for q in range(len(szerokosci)):
    szer = szerokosci[q]
    for i in range(len(glebokosci)):
    glb = glebokosci[i]
        #dalej obliczenia i wyniki zapisane do listy:
    wynik = szer * glb
    wszystie_wyniki.append(wynik)

Próbowałęm z df = pd.DataFrame(index=glebokosci, columns=szerokosci, data=wszystkie_wyniki[q]) lecz jak można się domyśleć stworzyło tabelę, gdzie wszystkie dane były ostatnim wynikiem operacji. Czy ktoś ma jakiś pomysł jak to można w łatwy sposób rozwiązać, może od samego początku tzn. pętli for w pętli for robię coś źle, chociaż dostaje wyniki operacji takie jak powinny być. Z góry dziękuję za pomoc. Pozdrawiam

EDIT: może poniższy przykład będzie mniej zawiły

import pandas as pd

szerokosci = []
glebokosci = []
wyniki = []
for i in range(1,5,1):
    szerokosci.append(i)
for i in range (1,4,1):
    glebokosci.append(i)

for s in range(len(szerokosci)):
    szeroksc = szerokosci[s]
    for g in range(len(glebokosci)):
        glebokosc = glebokosci[g]
        pole = szeroksc * glebokosc
        wyniki.append(pole)
        df = pd.DataFrame(index=glebokosci, columns=szerokosci, data=pole)
print (df)

Z powyższego otrzymuję tabelę:
1 2 3 4
1 12 12 12 12
2 12 12 12 12
3 12 12 12 12
a chciałbym otrzymać tabelę z wynikami mnożenia dla poszczególnych liczb z pierwszej kolumny i wiersza, czyli:
1 2 3 4
1 1 2 3 4
2 2 4 6 8
3 3 6 9 12

1
import numpy as np

def table(n, m): 
    M = np.ones(n*m, dtype=int).reshape(n, m)
    return M.cumsum(axis=0).cumsum(axis=1)

print(table(3, 4))
0
Pyxis napisał(a):
import numpy as np

def table(n, m): 
    M = np.ones(n*m, dtype=int).reshape(n, m)
    return M.cumsum(axis=0).cumsum(axis=1)

print(table(3, 4))

Dzięki za pomoc, nie do końca o to mi chodziło, gdyż mnożenie szerokości i głębokości to jedynie przykład, aby zobrazować dużo bardziej skomplikowane działania, których wyniki zapisują się w liście. Udało mi się stworzyć tabelę, która wyświetla wyniki operacji na 2 zmiennych, do przykładu opisanego przeze mnie kod poniżej:

n = len(glebokosci)
final = [wyniki[i * n:(i + 1) * n] for i in range((len(wyniki) + n - 1) // n)]
df = pd.DataFrame(data=final,columns=glebokosci,index=szerokosci)
print(df) #Właściwa tabela

1 użytkowników online, w tym zalogowanych: 0, gości: 1