为什么在 64 位操作系统上运行 32 位 Python 2.7 时,numpy 中intc
的数据类型默认为 32 位?
例:
np.intc(1).dtype
# dtype('int32')
同样地:
type(np.intc(1))
# <type 'numpy.int32'>
然而:
import numpy.distutils.system_info as sysinfo
sysinfo.platform_bits
# 64
同样:
import platform
platform.architecture()
# ('64bit', 'WindowsPE')
操作系统:
Windows 10 Enterprise
蟒蛇:
conda version : 4.4.10
conda-build version : 3.4.1
python version : 2.7.14.final.0
channel URLs : https://repo.continuum.io/pkgs/main/win-64
https://repo.continuum.io/pkgs/main/noarch
https://repo.continuum.io/pkgs/free/win-64
https://repo.continuum.io/pkgs/free/noarch
https://repo.continuum.io/pkgs/r/win-64
https://repo.continuum.io/pkgs/r/noarch
https://repo.continuum.io/pkgs/pro/win-64
https://repo.continuum.io/pkgs/pro/noarch
https://repo.continuum.io/pkgs/msys2/win-64
https://repo.continuum.io/pkgs/msys2/noarch
platform : win-64
np.intc
在用于构建运行时的编译器中被定义为 C 中大小为 int
的整数(请参阅此处(。在大多数现代编译器中,即使在 64 位工具链中,int
也被定义为 32 位(请参阅此处(。在您的情况下,您使用的是 Python 的 32 位编译,生成 32 位二进制文件的编译器int
定义为 32 以外的任何内容的可能性非常低。
您可以使用如下所示的程序检查一个特定编译器中int
的大小:
#include <stdio.h>
int main(void)
{
printf("int size: %d bits.n", sizeof(int) * 8);
return 0;
}
您将看到大多数编译器将生成一个程序,显示:
int size: 32 bits.