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