计算大数据集中各点之间距离的直方图

时间:2014-04-10 16:13:33

标签: python numpy scipy distance

我有大数据集,代表220维周期空间中的1.2M点(x改变fom(-pi,pi))...(矩阵:1.2M x 220)。

我想计算这些点之间的距离直方图,同时考虑周期性。我已经在python中编写了一些代码但是对于我的测试用例来说它仍然很慢(我甚至没有尝试在整个集合上运行它......)。

你可以看看并帮我调整一下吗?

非常感谢任何建议和评论。

import numpy as np

# 1000x220 test set (-pi,pi)

d=np.random.random((1000, 220))*2*np.pi-np.pi

# calculating theoretical limit on the histogram range, max distance between 
# two points can be pi in each dimension

m=np.zeros(np.shape(d)[1])+np.pi
m_=np.sqrt(np.sum(m**2))
# hist range is from 0 to mm
mm=np.floor(m_)
bins=mm/0.01
m=np.zeros(bins)

# proper calculations

import time
start_time = time.time()

for i in range(np.shape(d)[0]):
        diff=d[:-(i+1),:]-d[i+1:,:]
        diff=np.absolute(diff)
        adiff=diff-np.pi
        diff=np.pi-np.absolute(adiff)
        s=np.sqrt(np.einsum('ij,ij->i', diff,diff))
        m+=np.histogram(s,range=(0,mm),bins=bins)[0]


print time.time() - start_time

1 个答案:

答案 0 :(得分:0)

我认为通过将范围(...)划分为几个较小的范围并使用线程模块让几个线程同时运行循环,您将看到最大的改进,从将主循环分解为较小的部分

相关问题