dleal - 11 months ago 47

Python Question

I create the following random array and I multiply it times a constant but get an unexpected result (zeros instead of the answer I expect):

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

What is the reason for this? Seems extremely counterintuitive.

Answer Source

You are using python2 and `1/100`

is integer division, resulting in `0`

.

Use floating points:

```
A * (1.0/100)
```

or use a future import:

```
from __future__ import division
```

to enable floating point division for integers, too.