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

时间:2018-08-09 02:07:14

标签: python arrays user-defined-types

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

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

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

文件中包含的信息均为正数,文件格式如下,其中300000:

12345
45678
1056789
232323
6789010001
1023242556

当我打印出fp读入数组时,可以正确读入数组的前半部分,但是后半部分是奇怪的负数,这些负数根本不在我的文件中。

我如何才能正确读取文件中的内容?

2 个答案:

答案 0 :(得分:3)

您告诉它数字是int32,但至少有一些数字,例如6789010001大于可表示的32位有符号数(6789010001大于可表示的32位无符号数)。

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

答案 1 :(得分:2)

您有更大的数据,然后int32可以保存,这将导致溢出并使其变为负数。

Numpy的整数的作用不像python的整数,而是C整数

尝试将dtype从int32更改为int64或对象可能会有所帮助