将 numpy 数组乘以常数(例如 1/100)时的奇怪行为
Odd behavior when multiplying numpy array by a constant (e.g. 1/100)
我创建了以下随机数组,并将它乘以一个常数,但得到了意想不到的结果(零而不是我期望的答案):
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]])
这是什么原因?似乎非常违反直觉。
您正在使用 python2 并且 1/100
是整数除法,结果是 0
。
使用浮点数:
A * (1.0/100)
或使用未来的导入:
from __future__ import division
也为整数启用浮点除法。
我创建了以下随机数组,并将它乘以一个常数,但得到了意想不到的结果(零而不是我期望的答案):
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]])
这是什么原因?似乎非常违反直觉。
您正在使用 python2 并且 1/100
是整数除法,结果是 0
。
使用浮点数:
A * (1.0/100)
或使用未来的导入:
from __future__ import division
也为整数启用浮点除法。