np.linspace(10**3, 10**6, num=5, dtype=np.int16)yelds
array([ 1000, -11394, -23788, 29354, 16960], dtype=int16)我不理解在正区间中出现负数的原因。
谁能告诉我我错过了什么?(最终,我如何才能在像这样的长整数序列上获得线性间隔的数字。)
谢谢!
发布于 2018-10-08 00:23:06
正如评论中提到的,这样做的原因是overflow。
更具体地说,您要求提供介于1E3到1E6之间的数字,但是int16支持[-32768, 32767]范围内的值。当我们尝试使用int16来表示像40000这样的数字时,值会自动换行,得到的结果是40000-2**16 == -25536。较大的数字会一直“包装”,直到它们小到可以表示为止。
https://stackoverflow.com/questions/52331427
复制相似问题