我已经产生了一组坐标,这些坐标对应于x,y,z(不是笛卡儿但三元)和一组三元网格。由于大多数结果都需要高分辨率以便给出清晰的热图,我的三元网格最终变得非常大,我无法避免。
Coor(三元网格)具有大约500,000个元组和N(数据)~100,000,两者具有相同类型的坐标。这导致了相当荒谬的计算时间。每个N被分类到Coor中,稍后我会用它来绘制热图。我在python 3.4上这样做。下面是代码的片段,需要很长的计算时间。
for i in range(Coor):
for k in range(N):
if all(coor[i])==all(data1[k]):
value110[i]=(value110[i]+1.0)
有没有什么方法可以简化分箱过程或使python上的分箱过程更快?关于三元图的分级,网上没有太多话题,这引出了我的问题。
data110=[(0.53,0.23,0.24),(0.55,0.18,0.26),....]
Coor=[(0.0,0.0,1.0),(0.0,0.01,0.99),(0.0,0.02,0.98).....] #this would be the ternary grid (bottom axis,right axis,left axis)
value110将是一组零,对应于Coor(三元网格)。
value110=np.zeros(len(Coor))
值中的每个零值110都是对应于三元网格的浮点(它们代表每个三元网格处的热量水平)
data110可以在网格上获取任何值,因为它们是通过函数随机生成的。
an example of heatmap i plotted with a smaller sample size
我正在增加样本数量,以便在每个bin中提供更平滑的过渡。三元网格上的点对应0,我从数据中省略了(在绘图时减少了ram的需要)。当我试图放大我的样本时出现问题但是分箱过程不再那么高效,所以我试图提高分箱的速度