为什么 numpy 中的数据类型“intc”默认为 32 位



为什么在 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.

最新更新