什么决定了numpy中int的大小?

时间:2017-01-21 18:14:10

标签: python numpy

它看起来并不像是一个小小的' (32对64)处理器,请参阅http://www.cs.princeton.edu/~wayne/teaching/fibonacci-heap.pdf帖子的评论,特别是:

  

好的答案。正如我在上面的评论中提到的,我能够在使用64位ARM处理器的Raspberry Pi 3上复制@ suzep136的问题。知道为什么在64位架构上会出现溢出问题吗?我唯一能想到的是lapack / blas是为32位内核编译的;我想我通过apt-get安装了numpy。 - nrlakin

也不是C中int的大小,例如在我的机器上:

>>> import numpy, ctypes
>>> 
>>> ctypes.sizeof(ctypes.c_int)
4
>>> numpy.array([1]).dtype
dtype('int64')

那么,它取决于什么?

编辑:还有另一位候选人,谢谢你们:

  

LAPACK在所有体系结构上使用32位整数 - ev-br

编辑:部分答案为this。谢谢Goyo。 我已复制此内容并将其设为here,因此您可以添加更精细的内容,例如CW或Jython中发生的内容。我也对这种选择是否有更深层次的原因感兴趣。

2 个答案:

答案 0 :(得分:1)

感谢Goyo过于谦虚而无法获得信誉。查看相关但不同question的答案。

numpy中的默认整数类型是numpy.int_,请务必注意尾随下划线。它默认为C long 1

答案 1 :(得分:0)

好的,所以我可能会误解你的问题但是如果你看看Numpy Documentation我的猜测是numpy根据最大位大小可能上升或下降给定系统来分配位值建筑。基本上,因为您没有指定整数“容器”只需要8或16位长度,它默认为64位计算机上可能的最大容器。

如果你想找到比特数python有一个内置的“bit_length()”函数。请在此处查看:https://docs.python.org/3.6/library/stdtypes.html#int.bit_length

希望这能回答你的问题。