On 7 April 2016 at 15:31, Heli <heml...@gmail.com> wrote: > > Thanks a lot Oscar, > > The lexsort you suggested was the way to go.
Glad to hear it. > import h5py > import numpy as np > f=np.loadtxt(inputFile,delimiter=None) > xcoord=np.sort(np.unique(f[:,0])) > ycoord=np.sort(np.unique(f[:,1])) > zcoord=np.sort(np.unique(f[:,2])) > > x=f[:,0] > y=f[:,1] > z=f[:,2] > val=f[:,3] > > ind = np.lexsort((val,z,y,x)) # Sort by x, then by y, then by z, then by val > sortedVal=np.array([(val[i]) for i in > ind]).reshape((xcoord.size,ycoord.size,zcoord.size)) One final possible improvement is that np.array([val[i] for i in ind]) can probably be done with fancy indexing val[ind,:] removing the only Python loop left. -- Oscar -- https://mail.python.org/mailman/listinfo/python-list