numpy IndexError: zu viele Indizes für das array, wenn die Indizierung der matrix mit anderen
Ich habe eine matrix a, die ich erstellen, wie diese:
>>> a = np.matrix("1 2 3; 4 5 6; 7 8 9; 10 11 12")
Ich habe eine matrix die Etiketten, die ich erstellen, wie diese:
>>> labels = np.matrix("1;0;1;1")
Dies ist, was die beiden matricies Aussehen:
>>> a
matrix([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
>>> labels
matrix([[1],
[0],
[1],
[1]])
Wie Sie sehen können, wenn ich wählen Sie alle Spalten, ist es kein problem
>>> a[labels == 1, :]
matrix([[ 1, 7, 10]])
Aber wenn ich versuche eine Spalte angeben, bekomme ich eine Fehlermeldung
>>> a[labels == 1, 1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/numpy/matrixlib/defmatrix.py", line 305, in __getitem__
out = N.ndarray.__getitem__(self, index)
IndexError: too many indices for array
>>>
Weiß jemand, warum das so ist?
Ich bin bewusst, dass es ähnliche Fragen zu diesem schon, aber keiner von Ihnen erklären, mein problem gut genug, weder sind die Antworten hilfreich für mich.
- Etiketten, 2-d, aber der index verwendet, als ob es 1-d.
- Tatsächlich, die erste Indizierung ist falsch, auch mit numpy >=1.8. erhalten Sie die gleichen Fehler gibt es auch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Seit
labels
ist eine matrix, wenn Sielabels==1
erhalten Sie eine Boolesche matrix der gleichen Form. Dann tuta[labels==1, :]
werden Sie wieder nur die erste Spalte mit der entsprechenden Zeilen zu dem Spiel. Beachten Sie, dass Ihre Absicht zu bekommen:nicht erreicht wurde (Sie haben nur die erste Spalte), obwohl es funktionierte für NumPy < 1.8 (wie bereits von @seberg).
Um zu bekommen, was Sie wollen, Sie können mit einem abgeflachten Ansicht von
labels
:labels
zu np.ndarray während derravel
nennen flacht das array. Hinweis:==1
kann weggelassen werden