将numpy数组乘以常数(例如1/100)时的奇怪行为

时间:2016-09-11 18:24:16

标签: python numpy python-2.x

我创建了以下随机数组,并将其乘以常量但得到意外结果(零而不是我期望的答案):

In [4]: A = np.random.rand(1,11)

In [5]: A
Out[5]: 
array([[ 0.15138551,  0.41573765,  0.0212214 ,  0.44955909,  0.27013062,
         0.37835199,  0.89712845,  0.95333785,  0.09920397,  0.2303608 ,
         0.11246899]])

In [6]: A*(1/100)
Out[6]: array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])

In [7]: A/100
Out[7]: 
array([[ 0.00151386,  0.00415738,  0.00021221,  0.00449559,  0.00270131,
         0.00378352,  0.00897128,  0.00953338,  0.00099204,  0.00230361,
         0.00112469]])

这是什么原因?似乎非常违反直觉。

1 个答案:

答案 0 :(得分:4)

您使用的是python2,1/100是整数除法,结果为0

使用浮点数:

A * (1.0/100)

或使用将来的导入:

from __future__ import division

也可以为整数启用浮点除法。