【问题标题】:numpy linspace returning negative numbers for a positive intervalnumpy linspace 返回正区间的负数
【发布时间】:2018-09-14 11:51:43
【问题描述】:
np.linspace(10**3, 10**6, num=5, dtype=np.int16)

产量

array([  1000, -11394, -23788,  29354,  16960], dtype=int16)

我不明白在正区间中是否存在负数。

谁能指出我错过了什么? (最终我怎样才能设法在像这样的长整数序列中获得线性间隔的数字。)

谢谢!

【问题讨论】:

  • 它溢出了,因为你只使用了 16 位整数。你需要增加到np.int32np.int64
  • 多么愚蠢的错误......谢谢!

标签: python numpy


【解决方案1】:

如 cmets 中所述,其原因是 overflow

更具体地说,您要求输入 1E3 到 1E6 之间的数字,但 int16 支持 [-32768, 32767] 范围内的值。当我们尝试使用int16 表示像40000 这样的数字时,值会换行,我们得到的是40000-2**16 == -25536。大数会一直“包裹”,直到它们小到可以表示为止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-25
    • 2016-10-24
    • 2021-12-31
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多