Numpy calculations not computing correctly

Consider these lines of code:

    y[:,:,i,p] = np.divide(x[:,:,i,p], npq)   #divide array by constant
    orig = np.dot(y[:,:,i,p], npq)            #take previous output, and multiply by constant
    print(np.mean(x[:,:,i,p] - orig))         #print mean. should be 0

The expected output of these calculations should be 0. Rather, i'm getting the following:

...
0.0
-1.81671383445
-0.0719097733101
-0.102587446807
...

What am I doing wrong? I've tried converting all the numbers to integers rather than floating points, and the errors persist.

If you're going to be doing arithmetic involving constants, I'd recommend sticking to broadcasting.

Assuming npq is a scalar constant, this is enough.

y[:,:,i,p] /= npq  # division

And,

y[:,:,i,p] *= npq  # multiplication

np.dot should not be used unless you are performing matrix multiplication on tensors.