Am 30.06.16 um 17:49 schrieb Heli:
Dear all,

After a few tests, I think I will need to correct a bit my question. I will 
give an example here.

I have file 1 with 250 lines:
X1,Y1,Z1
X2,Y2,Z2
....

Then I have file 2 with 3M lines:
X1,Y1,Z1,value11,value12, value13,....
X2,Y2,Z2,value21,value22, value23,...
....

I will need to interpolate values for the coordinates on file 1 from file 2. 
(using nearest)
I am using the scipy.griddata for this.

scipy.interpolate.griddata(points, values, xi, method='linear', fill_value=nan, 
rescale=False)

This constructs a Delaunay triangulation and no wonder takes some time if you run it over 3M datapoints. You can probably save a factor of three, because:

I need to repeat the griddata above to get interpolation for each of the column 
of values.

I think this is wrong. It should, according to the docs, happily interpolate from a 2D array of values. BTW, you stated you want nearest interpolation, but you chose "linear". I think it won't make a big difference on runtime, though. (nearest uses a KDtree, Linear uses QHull)

I was wondering if there are any ways to improve the time spent in 
interpolation.

Are you sure you need the full generality of this algorithm? i.e., are your values given on a scattered cloud of points in the 3D space, or maybe the X,Y,Z in file2 are in fact on a rectangular grid? In the former case, there is probably nothing you can really do. In the latter, there should be a more efficient algorithm by looking up the nearest index from X,Y,Z by index arithmetics. Or maybe even reshaping it into a 3D-array.

        Christian

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to