【问题标题】:Odd behavior when multiplying numpy array by a constant (e.g. 1/100)将 numpy 数组乘以常数时的奇怪行为(例如 1/100)
【发布时间】:2016-09-11 18:24:15
【问题描述】:

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

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]])

这是什么原因?看起来非常违反直觉。

【问题讨论】:

    标签: python numpy python-2.x


    【解决方案1】:

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

    使用浮点数:

    A * (1.0/100)
    

    或使用未来的导入:

    from __future__ import division
    

    也为整数启用浮点除法。

    【讨论】:

      猜你喜欢
      • 2013-05-10
      • 2015-08-16
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多