2016-01-29 18 views
5

Tôi không biết nếu nó có thể, và nó có thể là một câu hỏi ngây thơ, nhưng làm thế nào tôi có thể thiết lập tương đương với R của rownames()colnames() đến một scipy.sparse.csr.csr_matrix?Tôi có thể đặt tên hàng và cột cho csr_matrix của Sciper bằng cách nào?

tôi thấy rằng my_matrix.dtype.names không làm việc ở đây, và tôi không thể tìm thấy bất kỳ "chỉ số" equivalend cho ma trận thưa thớt như vậy ...

Hơn nữa, pandas.sparse.* không phải là một tùy chọn ở đây, vì một số vấn đề mở ...

Cảm ơn bạn rất nhiều vì đã giúp đỡ của bạn,

+0

'dtype.names' tham chiếu đến' trường' của một mảng có cấu trúc. Hãy nghĩ về tên cột/tiêu đề trong bảng CSV. Bạn không thể làm nhiều toán trên các trường. Và bạn không thể sử dụng loại dtype đó trong ma trận thưa thớt. – hpaulj

Trả lời

3

bạn sẽ phải duy trì tên riêng, như không ai trong số các định dạng thưa thớt scipy của hỗ trợ tên chỉ mục. Điều này có thể trông giống như:

foo = csr_matrix(...) 
row_names = np.array(...) 
col_names = np.array(...) 

# index by name: 
row_idx, = np.where(row_names == "my row") 
col_idx, = np.where(col_names == "my col") 
foo[row_idx, col_idx] 
+0

Tôi tự hỏi liệu giao diện từ điển có nhanh hơn không? Định dạng 'dok' thưa thớt thực sự là một từ điển, với các chỉ mục là các khóa. – hpaulj

+0

Hiệu quả phụ thuộc vào kích thước và độ chệch của ma trận, nhưng vâng, từ điển của tên-> chỉ mục cũng sẽ hoạt động. DOK định dạng không giúp đỡ, mặc dù, vì nó là khóa phải là cặp số nguyên. – perimosocordiae

+0

Nhưng anh ta có thể làm từ điển của riêng mình với các nhãn của các nhãn làm chìa khóa. Nó sẽ không cho anh ta bất kỳ khả năng toán học nào. – hpaulj

Các vấn đề liên quan