Charlie - 4 years ago 194

Python Question

Before I ask my question, I provide you with the code.

`from scipy import *`

x = randn(10)

cum_x = cumsum(x)

#The objective is to recover x using cum_x and the diff function.

y = append(cum_x[0],diff(cum_x))

#Now, y should be equal to x but this is not confirmed by the function in1d

test = in1d(x,y)

The variable

`test`

Thank you in advance.

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

if you use set_printoptions to increase precision you will see some differences:

```
from scipy import *
set_printoptions(30)
x = randn(10)
cum_x = cumsum(x)
#The objective is to recover x using cum_x and the diff function.
y = append(cum_x[0], diff(cum_x))
print(x)
print("\n")
print(y)
#Now, y should be equal to x but this is not confirmed by the function in1d
test = in1d(x, y)
print(test)
```

Output:

```
[ 0.54816314147543721002620031868 0.14319052613251953554041051575
0.489110961092741158839913850898 -0.093011827554544138085823590245
-0.58370623188476589149331630324 -0.40395493550429123486011917521
0.387387395892057895263604905267 1.001637373359834937147638811439
-1.486778459872974744726548124163 1.446772274227251076084144187917]
[ 0.54816314147543721002620031868 0.143190526132519591051561747008
0.48911096109274110332876261964 -0.093011827554544179719187013688
-0.58370623188476589149331630324 -0.40395493550429123486011917521
0.387387395892057895263604905267 1.001637373359834937147638811439
-1.486778459872974744726548124163 1.446772274227251076084144187917]
[ True False False False True True True True True True]
```

What you probably want is allclose but interestingly setting the dtype to `np.float128`

or `np.longdouble`

on my ubuntu system does not lose precision and in1d returns True.

```
cum_x = cumsum(x,dtype=np.longdouble)
```

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**