为什么numpy中的数据类型`intc`默认为32位?

时间:2018-04-17 14:01:14

标签: python numpy

为什么在64位操作系统上运行带有Python 2.7的32位Anaconda时,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')

OS:

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

1 个答案:

答案 0 :(得分:1)

np.intc被定义为用于构建运行时(see here)的编译器中C大小为int的整数。在大多数现代编译器中,即使在64位工具链中,int也被定义为32位(see here)。在您的情况下,您使用的是32位Python编译,编译器生成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.