我正面临 numpy 的 intc 数据类型的问题。我在我的机器上运行 Linux 64 位。我需要使用超过 32 位限制的索引实例化 scipy.sparse.csr_matrix。例如:

我已经实例化了一个 csr 矩阵:

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

这给我没有问题。然后,在我做的代码中的某个地方,让我们说:
matrix[0, 2401803431]=1

我得到了 ValueError: column index values must be >= 0 。我调试了代码,发现在 scipy 的 csr_matrix 实现中的某个地方,列值被转换为 numpy 的 intc 数据类型。
为了确保这是一个 intc 问题,我使用以下代码进行了检查:
>>> import numpy as np
>>> info=np.iinfo(np.intc)
>>> info.max
2147483647

该值是 2^31-1。
那么,如果有办法从 32 位 intc 转到 64 位 intc,您有什么建议吗?在这个页面 http://docs.scipy.org/doc/numpy/user/basics.types.html 它说
intc    Identical to C int (normally int32 or int64)

非常感谢您的宝贵时间!

最佳答案

我通过将 scipy 库升级到最新版本来解决(以前我有 1.3,现在是 1.4)

关于python - 如何将 numpy 的 intc 值从 32 位更改为 64 位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27818477/

10-11 23:06