2016-09-11 1 views
-1

私は、次のランダムな配列を作成し、私は定数倍を掛けるが、(私が期待する答えの代わりにゼロを)予想外の結果が得られます。奇数行動(例えば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]]) 

この理由は何ですか?非常に直観に反しているようです。

答えて

4

あなたはpython2を使用しており、1/100は整数除算であり、結果として0となります。

利用のフローティングポイント:

A * (1.0/100) 

または将来のインポートを使用:あまりにも、整数の浮動小数点除算を有効にするために

from __future__ import division 

を。