[SciPy-User] Value that compare two

denis denis-bz-py@t-online...
Wed Apr 3 03:51:41 CDT 2013


Florian Lindner <mailinglists <at> xgm.de> writes:
> Hello,
> 
> this is not exactly a scipy question... but I want to implement it with scipy. 
> 
> 
> I have two datasets of shape: (n, 2), each row consists of a coordinate and a 
> pressure value from experiments or simulations.
> 
> I want to compare these two sets and get some kind of integral distance value.
> 
> delta = abs(data2 - data1)
> delta[:,0] = data1[:,0] # I don't want to delta the coordinates ??

Florian,
  to compare two curves,
you could first interpolate both to the same fine grid,
say np.linspace( lo, hi, 1000 ).
Untested --

    from __future__ import division
    import numpy as np
    import pylab as pl

    plot = 1

    def compare_ab( A, B, xfine ):
        """ compare A, B n x 2 on the same fine grid """
        Ax, Ay = A.T
        Bx, By = B.T
        Afine = np.interp( xfine, Ax, Ay )
        Bfine = np.interp( xfine, Bx, By )
        absdiff = np.fabs( Afine - Bfine )
        print "av |A - B|: %.3g" % absdiff.mean()
        rms = np.sqrt( ((Afine - Bfine) ** 2) .mean() )
        print "rms |A - B|: %.3g" % rms
        if plot:
            pl.plot( xfine, Afine, label="A" )
            pl.plot( xfine, Bfine, label="B" )
            pl.legend()
            pl.plot()


Which metric to use ? I don't know of *a priori* reasons
for choosing L1 vs L2 vs Lmax.
For distributions, you might ask on stats.stackexchange.com; and see
http://stats.stackexchange.com/questions/25764/clustering-distributions

cheers
  -- denis



More information about the SciPy-User mailing list