Seite 1 von 1

Matrizen in 3 Dimensionen

Verfasst: Montag 18. Mai 2020, 18:16
von neilada
Hallo, kann mir hier vielleicht wer sagen wo der Fehler liegt? Bin Anfängerin, hab also nicht viel Erfahrung..


import matplotlib.pyplot as plt
%matplotlib inline
import numpy

# Punkt a)

matrix = np.zeros((10,10,10))
matrix1 = np.zeros((10,10,10))
matrix2 = np.zeros((10,10,10))

for it in range(10):
for jt in range(10):
for kt in range(10):
matrix[it,jt,kt]= jt * it - jt * kt

plt.matshow(matrix, cmap = 'magma')
plt.colorbar()

# Punkt b)

for it in range(10):
for jt in range(10):
for kt in range(10):
matrix1[it,5,kt]= jt*it-jt*kt
matrix2[it,jt,9]=jt*it-jt*kt

plt.matshow(matrix1, cmap = 'magma')
plt.colorbar()
plt.figure()

plt.matshow(matrix2, cmap = 'magma')
plt.colorbar()


Es kommt Valueerror: too many values too unpack (expected 2)


Hier wäre das ganze Beispiel:

Erweitern Sie das Konzept von Matrizen auf 3 Dimensionen:

a) Erstellen Sie mit np.zeros ein 10x10x10 Objekt (= Tensor dritter Stufe). Benutzen Sie eine Dreifachschleife (it,jt,kt), um über alle Einträge zu gehen. Jeder Eintrag soll gefüllt werden mit jt∗it−jt∗kt.
b) Aus diesem "Würfel" sollen nun zwei Ebenen (10x10 Matrizen) geschnitten werden, um Sie zu visualisieren. Dabei erstellen Sie eine der Ebenen mit jt = 5 und die andere Ebene mit kt = 9 (dafür werden keine Schleifen benötigt!). Visualisieren Sie im Anschluss die beiden Matrizen separat in 2 Plots. (Hinweis: Bitte erinnern Sie sich an die Ansprache per Indizes von Numpy Objekten. Zum Beispiel bedeutet [2,:] dass der erste Index bei 2 fixiert ist und alle Werte des zweiten Index angesprochen werden. )
c) Visualisieren Sie in einem dritten Plot die Matrix aus der Substraktion der beiden, genauer gesagt, die resultierende Matrix wenn man die Ebene aus kt = 9 von der Ebene jt = 5 abzieht. Geben Sie für alle 3 Plots colorbars an.

Re: Matrizen in 3 Dimensionen

Verfasst: Montag 18. Mai 2020, 18:45
von __blackjack__
@neilada: Also ich bekomme da einen `NameError` weil `np` undefiniert ist. Wenn ich das behebe bekomme ich die Ausnahme die Du angegeben hast. Und zwar beim Aufruf von `plt.matshow()`. Bitte gib am besten immer den kompletten Traceback 1:1 an, damit man sieht wo die Ausnahme auftritt und wie die Aufrufhierarchie bis zur Ausnahme aussieht.

Was hättest Du denn da jetzt erwartet was passiert? Wie sollte eine Funktion die zweidimensionale Arrays grafisch darstellt, nun mit einer dreidimensionalen Matrix umgehen? Die Aufgabenstellung sagt ja auch nicht, dass man diesen ”Würfel” grafisch darstellen soll. Lies Teil b) noch mal genauer.