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 或对象可能会有帮助
你告诉它数字是 int32
s,但至少你的一些数字,例如6789010001 大于带符号的 32 位数量可以表示(6789010001 大于无符号的 32 位数量可以表示)。
如果所有数字都是正数,我建议使用 uint64
作为您的数据类型(不过您应该检查文件中的所有数字实际上都小于 2**64
)。
为什么 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 或对象可能会有帮助
你告诉它数字是 int32
s,但至少你的一些数字,例如6789010001 大于带符号的 32 位数量可以表示(6789010001 大于无符号的 32 位数量可以表示)。
如果所有数字都是正数,我建议使用 uint64
作为您的数据类型(不过您应该检查文件中的所有数字实际上都小于 2**64
)。