Ich habe das Ergebnis einiger mit numpy.matrix
Typen gemacht BerechnungenSeltsames Verhalten von Matplotlib Plotten numpy.matrix Typen
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
# [...]
# Downsampling for plotting
# type(verts): np.matrix
# verts.shape: (3, 700000)
verts = verts_small[:, ::1000]
ax.plot(verts[0, :], verts[1, :], verts[2, :], 'o')
Dieses seltsame Verhalten. Plot die Punkte alle in einer Linie.
Wenn statt:
verts = np.array(verts[:, ::1000])
der 3D-Plot wie erwartet funktioniert. Ist das ein beabsichtigtes Verhalten oder ist es ein Fehler?
Haben Sie sich die Form von 'verts' nach der' :: 1000' Indizierung angesehen? Wenn Sie mit einem 2D-Array beginnen, müssen Sie sicherstellen, dass Sie die richtige Dimension indizieren. Übe diese Art der Indizierung auf etwas Kleinerem, damit du den Unterschied verstehst. – hpaulj
@hpaulj gab es einen Tippfehler beim ersten Anruf, den ich korrigiert habe. Übrigens ist die Form, die ich nach dem Slicing bekomme, die gleiche für "np.array" und "np.matrix". – SolidSnake
Beachten Sie, dass beim Indexieren einer 'np.matrix' das Ergebnis immer noch 2d ist. Ein 'np.darray' könnte 1d sein (abhängig davon, wie du indexierst). – hpaulj