代码之家  ›  专栏  ›  技术社区  ›  user3152377

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

  •  0
  • user3152377  · 技术社区  · 6 年前

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

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

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

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

    12345
    45678
    1056789
    232323
    6789010001
    1023242556
    

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

    我怎样才能让它正确读取文件中的内容?

    2 回复  |  直到 6 年前
        1
  •  2
  •   James Liu    6 年前

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

    Numpy的整数不是python的整数,而是C整数

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

        2
  •  3
  •   ShadowRanger    6 年前

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

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