我遇到了 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/