我写了一个程序,在天文图像中寻找彗星,但在一个区域运行缓慢。我已经通过尽可能使用numpy和cupy优化了它的速度
我可以将速度问题归结为一个操作:
t1=np.isin(thirdsplit,file3new)
thirdsplit
和file3new
都是带有浮点值的numpy数组。它们的大小可以是不同的,但通常两者的大小都可能是600 x 600
上一行比较了两个数组中的每个位置,并查看另一个数组中的对应位置是否相同。如果是这样,则True
返回到结果为相同形状的t1数组中的该位置
乙二醇
thirdsplit[100,100] = 2.80000
file3new[100,100] = 2.8000
所以
t1[100,100]
将返回True
有没有办法重写这句话
t1=np.isin(thirdsplit,file3new)
让它跑得更快
为了记录在案,我搜索了其他答案。我发现了一个类似的问题,但使用了熊猫,但我的程序中没有使用熊猫
isclose
广播应该有效,浮动应该更准确:与之相比:
编辑
一个例子,其中
isclose
得到了正确的结果-这是由于它处理浮动的方式比较:
isin
使用==
测试,并且可能由于浮点精度而失败相关问题 更多 >
编程相关推荐