2015-01-07 13 views
5

Tôi đang gặp phải sự cố với kiểu dữ liệu intc của numpy. Tôi đang chạy một Linux 64 bit trên máy tính của mình. Tôi cần khởi tạo scipy.sparse.csr_matrix với các chỉ mục vượt quá giới hạn 32 bit. Ví dụ:Cách thay đổi giá trị intc của numpy từ 32 đến 64 bit

Tôi đã khởi tạo một ma trận csr như thế:

matrix=csr_matrix((2, 4132009369),dtype=int8) 

này gaves tôi không có vấn đề. Sau đó, ở đâu đó trong mã tôi làm, giả sử:

matrix[0, 2401803431]=1 

Và tôi có ValueError: column index values must be >= 0. Tôi gỡ lỗi mã và tôi phát hiện ra rằng một nơi nào đó trong việc thực hiện scipy của csr_matrix giá trị cột được chuyển đổi thành một kiểu dữ liệu intc của numpy. Để đảm bảo đó là sự cố intc tôi đã kiểm tra với mã sau:

>>> import numpy as np 
>>> info=np.iinfo(np.intc) 
>>> info.max 
2147483647 

giá trị đó là 2^31-1. Vì vậy, bạn có bất cứ đề nghị nào nếu có một cách để đi từ 32 bit intc đến một intc 64 bit? Trong trang này http://docs.scipy.org/doc/numpy/user/basics.types.html nó nói rằng

intc Identical to C int (normally int32 or int64) 

Cảm ơn bạn rất nhiều vì đã dành thời gian!

Trả lời

2

Tôi đã giải quyết bằng cách nâng cấp thư viện scipy lên phiên bản mới nhất (trước đây tôi có 1.3, bây giờ 1.4)

+1

Tôi nghĩ bạn đã nâng cấp từ 0,13 lên 0,14. –

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