Python:为什么我的整数在读入 np.genfromtxt 时被转换为奇怪的负数

Python: Why are my integers being converted to strange negative numbers at np.genfromtxt read in

为什么 python 向我的数组中插入奇怪的负数?

我正在从如下纯文本文件中读取一些数字数据:

fp=np.genfromtxt("mytextfile.txt", dtype=('int32'), delimiter='\r\n')

文件中包含的信息都是正数,文件格式如下,共有300000个这样的数字:

12345
45678
1056789
232323
6789010001
1023242556

当我打印出读入数组的 fp 时,数组的前半部分被正确读入,但后半部分是我的文件中根本没有的奇怪负数。

如何让它正确读取文件中的内容?

您的数据大于 int32 可以保存的数据,这会导致溢出并使其为负值。

Numpy 的整数不像 python 的整数,它像 C 整数

尝试将数据类型从 int32 更改为 int64 或对象可能会有帮助

你告诉它数字是 int32s,但至少你的一些数字,例如6789010001 大于带符号的 32 位数量可以表示(6789010001 大于无符号的 32 位数量可以表示)。

如果所有数字都是正数,我建议使用 uint64 作为您的数据类型(不过您应该检查文件中的所有数字实际上都小于 2**64)。