Không có vấn đề:Scipy: Các ma trận thưa thớt có hỗ trợ lập chỉ mục nâng cao không?
>>> 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]])
Big vấn đề:
>>> 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]]
công trình lớn, nhưng đánh bại toàn bộ mục đích của tôi sử dụng ma trận thưa thớt như mảng của tôi là quá lớn. Tôi đã kiểm tra các thuộc tính và phương pháp liên kết với một số ma trận thưa thớt cho bất cứ điều gì tham khảo chỉ mục nâng cao, nhưng không có con xúc xắc. Bất kỳ ý tưởng?
Tại sao bạn đặt thêm một cặp dấu ngoặc vuông? Họ là logic run rẩy, điều đó chỉ xảy ra để bỏ qua bởi lý luận của nó. Khác sau đó, hãy thử chỉ số ưa thích 1-d chỉ, đây là những ma trận, lập chỉ mục ưa thích chiều cao hơn sẽ giết ma trận 2-d của bạn anyway khả năng. – seberg
@seberg: Ví dụ trên chỉ minh họa cú pháp [index indexing] (http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html). Trong mã thực sự của tôi, tôi cần lập chỉ mục nâng cao để gọi các hàng _specific_ khi cần (nghĩa là [t [1], t [5], t [6]]) thay vì phạm vi hoặc các lát. –
Có, nhưng việc thêm cặp thừa đó cũng có thể được hiểu là 't [np.array ([x])]' thay vì 't [x,]' thêm một chiều bổ sung vào chỉ mục riêng lẻ. Và tôi sẽ không tin tưởng vào việc lập chỉ mục thưa thớt để xử lý trường hợp này nhất thiết như bạn muốn. – seberg