On 7 April 2016 at 15:31, Heli <[email protected]> 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