# Modify 3D numpy array using interpolation

I have a 3D array that I want to interpolate the np.nan values along the z dimension, and I just want the changes to modify my existing array. However, the changes seems not to be working. I have a test array with dimension (3,3,3) with nan values. I am accessing the z dimension and perform interpolation. I would like to have is that nan values will be replaced by interpolated values along the z dimension.

def arr_interp(array):
arrN=np.array(array)
ix=-np.isnan(arrN)
idxTrue=ix.nonzero()[0]
valueTrue=arrN[-np.isnan(arrN)]
countFalse=np.isnan(arrN).ravel().nonzero()[0]
arrN[np.isnan(arrN)]=np.interp(countFalse,idxTrue,valueTrue)
# I got this function from another forum

In [177]:arrStack
Out[178]:
array([[[ 0.59016759,         nan,  0.88641936],
[ 0.94884139,         nan,  0.89443098],
[ 0.7730535 ,         nan,  0.86262287]],

[[ 0.106567  ,         nan,  0.83757824],
[ 0.21794018,         nan,  0.66128902],
[ 0.21961069,         nan,  0.28654693]],

[[ 0.26142901,         nan,  0.95653887],
[ 0.19616204,  0.45      ,  0.61531475],
[ 0.78262652,  0.76      ,  0.47786104]]])

In [181]: arrStack[0][0]
Out[182]: array([ 0.59016759,         nan,  0.88641936])

In [183]: arr_interp(arrStack[0][0])

In [184]: arrStack
Out[184]:
array([[[ 0.59016759,         nan,  0.88641936],
[ 0.94884139,         nan,  0.89443098],
[ 0.7730535 ,         nan,  0.86262287]],

[[ 0.106567  ,         nan,  0.83757824],
[ 0.21794018,         nan,  0.66128902],
[ 0.21961069,         nan,  0.28654693]],

[[ 0.26142901,         nan,  0.95653887],
[ 0.19616204,  0.45      ,  0.61531475],
[ 0.78262652,  0.76      ,  0.47786104]]])