有没有一种快速的方法(并行)来找到两个大文件之间的欧几里得距离?

时间:2019-05-29 13:36:42

标签: python

我正在尝试查找两个非常大的文件之间的欧几里得距离。如何加快计算速度?因为,距离计算消耗大量时间。

我尝试使用Ipyparallel方法来利用可用的内核,但是这似乎仍然很慢。

import h5py
import numpy as np
import pandas as pd
from ipyparallel import Client
rc=Client(profile='setupparallelcluster')
dview=rc[:]
dview.scatter('df',pd.read_csv("singlepcsavecoordinates.dat",sep="\t", 
names=["CellNum","SegName","xcoord", "ycoord", "zcoord"]))
dview.execute('d2=[]')


datagrc=h5py.File('newdata.hdf5','r')
dataxpos=datagrc['dataX']
dataypos=datagrc['dataY']
datazpos=datagrc['dataZ']

@dview.parallel(block=True)
def loopover(a,b,c):
    for ij in range(len(a)): 
        grcall=[a[ij],b[ij],c[ij]]
        for jj in range(len(df)): 
            pcall=[df['xcoord'][jj],df['ycoord'][jj],df['zcoord'][jj]]
            eucdist=sum((p-q)**2 for p,q in zip(pcall,grcall)) ** .5
        d2.append(eucdist)
return len(d2)

chkd2=loopover(dataxpos,dataypos,datazpos)
print chkd2

请告诉我是否有更好的方法?

0 个答案:

没有答案