Kein Problem:Scipy: Ermöglichen dünn besetzte Matrizen erweiterte Indizierung?
>>> t = np.array([[1,1,1,1,1],[2,2,2,2,2],[3,3,3,3,3],[4,4,4,4,4],[5,5,5,5,5]])
>>> x = np.arange(5).reshape((-1,1)); y = np.arange(5)
>>> print (t[[x]],t[[y]])
Großes Problem:
>>> s = scipy.sparse.csr_matrix(t)
>>> print (s[[x]].toarray(),s[[y]].toarray())
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
: :
: :
ValueError: data, indices, and indptr should be rank 1
s.toarray()[[x]]
funktioniert gut, aber verfehlt den Sinn und Zweck von mir mit Sparse-Matrizen als meine Arrays zu groß ist. Ich habe die Attribute und Methoden, die mit einigen der dünn besetzten Matrizen verknüpft sind, auf etwas überprüft, das auf Erweiterte Indizierung verweist, aber keine Würfel. Irgendwelche Ideen?
Warum setzen Sie ein zusätzliches Paar eckige Klammern? Sie sind wackelige Logik, die numpy gerade durch seine Argumentation ignoriert. Anders als das, probiere nur 1-d fancy Indizes, das sind Matrizen, höherdimensionale Fancy Indizierung würde deine 2-d Matrix sowieso wahrscheinlich umbringen. – seberg
@seberg: Das obige Beispiel soll nur die [erweiterte Indizierung] (http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html) Syntax veranschaulichen. In meinem realen Code benötige ich eine erweiterte Indexierung, um bei Bedarf _ _ spezifische_ Zeilen aufzurufen (d. H. –
Ja, aber das Hinzufügen dieses zusätzlichen Paars könnte auch als 't [np.array ([x])]' 'anstelle von' t [x,] 'interpretiert werden, was dem einzelnen Index eine zusätzliche Dimension hinzufügt. Und ich würde der spärlichen Indexierung nicht vertrauen, um diesen Fall notwendigerweise so zu behandeln, wie Sie es wollen. – seberg