为什么python为什么要在我的数组中插入奇怪的负数?
我正在从纯文本文件中读取一些数字数据,如下所示:
fp=np.genfromtxt("mytextfile.txt", dtype=('int32'), delimiter='\r\n')
文件中包含的信息均为正数,文件格式如下,其中300000:
12345
45678
1056789
232323
6789010001
1023242556
当我打印出fp读入数组时,可以正确读入数组的前半部分,但是后半部分是奇怪的负数,这些负数根本不在我的文件中。
我如何才能正确读取文件中的内容?
答案 0 :(得分:3)
您告诉它数字是int32
,但至少有一些数字,例如6789010001大于可表示的32位有符号数(6789010001大于可表示的32位无符号数)。
如果所有数字都是正数,建议您使用uint64
作为数据类型(不过,您应该检查文件中的所有数字实际上是否小于2**64
)。
答案 1 :(得分:2)
您有更大的数据,然后int32可以保存,这将导致溢出并使其变为负数。
Numpy的整数的作用不像python的整数,而是C整数
尝试将dtype从int32更改为int64或对象可能会有所帮助