【发布时间】:2020-10-18 02:38:12
【问题描述】:
我有一个数据存档。 (xx,yy,EXTRA) 我想将数据分成大小相等的网格。例如,假设数据是:
xx=np.array([0.1, 0.2, 3, 4.1, 3, 0.1])
yy=np.array([0.35, 0.15, 1.5, 4.5, 3.5, 3])
EXTRA=np.array([0.01,0.003,2.002,4.004,0.5,0.2])
我想制作大小为 1x1 的方形网格,然后获得网格上每个点的“EXTRA”之和。
这是我尝试过的
import math
for i in range(0,5):
for j in range(0,5):
for x,y in zip(xx,yy):
k=math.floor(x)
kk=math.floor(y)
if i<=k<i+1.0 and j<=kk<j+1.0:
print("(x,y)=" ,x,",",y,",","(i,j)=",i,",",j ,"Unkow sum of EXTRA")
我作为输出获得
(x,y)= 0.1 , 0.35 , (i,j)= 0 , 0 Unkow sum of extra
(x,y)= 0.2 , 0.15 , (i,j)= 0 , 0 Unkow sum of extra
(x,y)= 0.1 , 3.0 , (i,j)= 0 , 3 Unkow sum of extra
(x,y)= 3.0 , 1.5 , (i,j)= 3 , 1 Unkow sum of extra
(x,y)= 3.0 , 3.5 , (i,j)= 3 , 3 Unkow sum of extra
(x,y)= 4.1 , 4.5 , (i,j)= 4 , 4 Unkow sum of extra
因此,前两个点的坐标为 (0.1,0.35) 和 (0.2,0.15),并且位于 cuadrant (0,0) 内。查看“EXTRA”,我知道在 cuadrant (0,0) 中,我应该得到“EXTRA”的总和应该是 Sum_extra= 0.01+0.003。但是我不知道如何用代码来计算总和。
更多信息
我真正的问题是我在一个大立方体盒子里有“粒子”,我想把盒子细分成更小的盒子,在每个小盒子里我想获得它们“质量”的总和,在我的示例中为“EXTRA=mass”。
我怀疑我对一个粒子是否属于象限进行分类的方式很慢,由于我有很多数据,这可能会出现问题。任何建议都将不胜感激。
【问题讨论】:
-
I suspect that ... is slow- 您是否进行了任何测试来验证这一点? -
还没有,在完成全部工作之前,我正在处理较小的样本。但是我认为我找到了一种更简单的方法来做我想做的事,如果可行,我会将解决方案作为评论发布。
-
你也可以看看my research 最快的3D解决方案。
-
pandas似乎在这里获胜,但如果使用降维,您可以实现 2 到 3 倍的加速。
标签: python python-3.x numpy