Pra*_*ana 15 python numpy spyder anaconda
我在笔记本电脑上安装了Anaconda 3 64位,并在Spyder中编写了以下代码:
import numpy.distutils.system_info as sysinfo
import numpy as np
import platform
sysinfo.platform_bits
platform.architecture()
my_array = np.array([0,1,2,3])
my_array.dtype
Run Code Online (Sandbox Code Playgroud)
这些命令的输出显示以下内容:
sysinfo.platform_bits
Out[31]: 64
platform.architecture()
Out[32]: ('64bit', 'WindowsPE')
my_array = np.array([0,1,2,3])
my_array.dtype
Out[33]: dtype('int32')
Run Code Online (Sandbox Code Playgroud)
我的问题是,即使我的系统是64位,为什么默认情况下数组类型是int32而不是int64?
任何帮助表示赞赏.
Sto*_*ica 12
默认整数类型np.int_是C long:
http://docs.scipy.org/doc/numpy-1.10.1/user/basics.types.html
但是C long在win64中是int32.
https://msdn.microsoft.com/en-us/library/9c3yd98k.aspx
这是win64平台的一种奇怪之处.
在Microsoft C中,即使在64位系统上,long int数据类型的大小也是32位.(例如,参见https://msdn.microsoft.com/en-us/library/9c3yd98k.aspx.)Numpy继承了C编译器的整数的默认大小long int.
小智 6
原始海报,普拉纳,问了一个很好的问题。“为什么整数默认设置为 32 位,在 64 位机器上?”
据我所知,简短的回答是:“因为它被设计错了”。似乎很明显,64 位机器应该在任何关联的解释器中默认将整数定义为 64 位。但当然,这两个答案解释了为什么情况并非如此。现在情况有所不同,因此我提供此更新。
我注意到,对于 CentOS-7.4 Linux 和 MacOS 10.10.5(新的和旧的),运行 Python 2.7.14(使用 Numpy 1.14.0),(截至 2018 年 1 月),现在定义了默认整数作为 64 位。(初始示例中的“my_array.dtype”现在将在两个平台上报告“dtype('int64')”。
如果您在进行整数数学运算,那么在任何解释器中使用 32 位整数作为默认整数可能会导致非常奇怪的结果,正如这个问题所指出的:
现在看来 Python 和 Numpy 已经更新和修订(更正,有人可能会争论),因此为了复制上述问题中所遇到的问题,您必须将 Numpy 数组明确定义为 int32。
在 Python 中,现在在两个平台上,默认整数看起来都是 int64。此代码在两个平台(CentOS-7.4 和 MacOSX 10.10.5)上运行相同:
>>> import numpy as np
>>> tlist = [1, 2, 47852]
>>> t_array = np.asarray(tlist)
>>> t_array.dtype
Run Code Online (Sandbox Code Playgroud)
dtype('int64')
>>> print t_array ** 2
Run Code Online (Sandbox Code Playgroud)
[ 1 4 2289813904]
但是,如果我们将 t_array 设为 32 位整数,则会得到以下结果,因为整数计算会滚动 32 位字中的符号位。
>>> t_array32 = np.asarray(tlist, dtype=np.int32)
>>> t_array32.dtype
Run Code Online (Sandbox Code Playgroud)
dtype*('int32')
>>> print t_array32 ** 2
Run Code Online (Sandbox Code Playgroud)
[ 1 4 -2005153392]
使用int32的原因当然是效率。在某些情况下(例如使用 TensorFlow 或其他神经网络机器学习工具),您希望使用 32 位表示(当然主要是浮点数),因为与使用 64 位浮点数相比,速度提升可能相当大重大。
| 归档时间: |
|
| 查看次数: |
2996 次 |
| 最近记录: |