numpy linspace 在正间隔下返回负数

4
np.linspace(10**3, 10**6, num=5, dtype=np.int16)

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

我不理解为什么在一个正数区间内会有负数。

有人能指出我错过了什么吗?(而且最终如何才能获得像那样的长整数序列上的线性间隔数字。)

谢谢!


8
由于你只使用16位整数,导致溢出。需要升级到np.int32np.int64 - roganjosh
多么愚蠢的错误.... 谢谢! - Sovos
1个回答

0

正如评论中所提到的,原因在于overflow

更具体地说,您要求介于1E3至1E6之间的数字,但int16仅支持范围内的值[-32768, 32767]。 当我们尝试使用int16表示像40000这样的数字时,该值会被包装,我们得到的是40000-2 ** 16 == -25536 。 大数会不断“包装”,直到变得足够小才能表示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接