Visualizing depth image after accessing render results Based on the work of [1] I obtained the depth data of my scene as shown in the code bellow: 

scene.use_nodes = True
tree = scene.node_tree
links = tree.links

# create input render layer node
rl = tree.nodes.new('CompositorNodeRLayers')    

# create output node
v = tree.nodes.new('CompositorNodeViewer')   
v.use_alpha = False

# Links
links.new(rl.outputs['Z'], v.inputs[0]) # link Z to output

bpy.ops.render.render()

# get viewer pixels
pixels = bpy.data.images['Viewer Node'].pixels
# size is always width * height * 4 (rgba)
pixels = np.array(pixels)[::4]

ix = scene.render.resolution_x
iy = scene.render.resolution_y
depth = np.zeros((ix/2,iy/2))

for i in range(0, int(round(ix/2))):
 for k in range(0, int(round(iy/2))):
     depth[i,k] = pixels[i+k]     

np.save('...\\outfile.npy', depth)


I set up the nodes, forward the z-data to the output node, render and save the pixels as an array. Since I use depth data instead of RGBA, I only use every 4-th element in the array since the other 3 ones are equal. Further, I use the dimensions of the image to setup a ndarray with numpy (depth) wich I save to an .npy file finally. Somewhere in this part I make a mistake since following code (from commandline) generates a somehow weird looking plot (shown below as well) 

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

data = np.load('...\\outfile.npy')
x, y = np.mgrid[:data.shape[0], :data.shape[1]]
fig = plt.figure()
ax = fig.add_subplot(1,1,1,projection="3d")
surf=ax.plot_surface(x,y,data)
plt.show()


For a centered cube I get the following outcome: 



So I hope somebody can give me a hint on where to look exactly for the error, and also I would be very thankfull for coding and style tips. I also found similar posts, but no one where the obtained data is visualized.  

[1] https://ammous88.wordpress.com/2015/01/16/blender-access-render-results-pixels-directly-from-python-2/
the line

depth[i,k] = pixels[i+k] 


seems off to me, it seems as if you need to transform your indices between the 2d depth array and the flat 1d pixels array like:

depth[i,k] = pixels[i*int(round(ix/2))+k] 


where the index i offsets multiples of the length a whole row into the array, and k additionally offsets into each element of it.