2013-02-01 35 views

回答

1

其實,這拉姆達是相當有效率:

In [1]: unsquareform = lambda a: a[numpy.nonzero(numpy.triu(a))] 

例如:

In [2]: scipy.spatial.distance.pdist(numpy.arange(12).reshape((4,3))) 
Out[2]: 
array([ 5.19615242, 10.39230485, 15.58845727, 5.19615242, 
     10.39230485, 5.19615242]) 

In [3]: unsquareform(scipy.spatial.distance.squareform(scipy.spatial.distance.pdist(numpy.arange(12).reshape((4,3))))) 
Out[3]: 
array([ 5.19615242, 10.39230485, 15.58845727, 5.19615242, 
     10.39230485, 5.19615242])