优化scipy最近邻搜索

时间:2017-07-31 04:12:47

标签: python python-2.7 scipy nearest-neighbor pysal

我试图找到距离1公里范围内的所有最近邻居。这是我构建树并搜索最近点的脚本,

tree.query_ball_point

从我在pysal页面中读到的内容,它说 -

  

kd-tree建立在scipy的kd-tree功能之上。如果使用scipy   0.12或更高版本使用scipy.spatial.cKDTree,否则使用scipy.spatial.KDTree。

在我的情况下应该使用cKDTree。这适用于样本数据集,但由于public class MainActivity extends AppCompatActivity { EventBroadcaster sms; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent ret; sms = new EventBroadcaster(); sms.setMainActivity(this); sms.say("Hello from EventBroadcaster"); IntentFilter filter = new IntentFilter(); filter.addAction("android.provider.Telephony.SMS_RECEIVED"); //filter.addCategory(Intent.CATEGORY_DEFAULT); ret = registerReceiver(sms, filter); //******************************************// if (ret == null) { sms.say("Fault to activate Broadcaster.. Intent = null"); } } public void showToast(String message){ // Show Alert int duration = Toast.LENGTH_LONG; Toast toast = Toast.makeText(getApplicationContext(), message, duration); toast.show(); } } 返回索引列表作为结果。每个列表将包含100个元素。对于我的数据点(2百万条记录),这种情况越来越大,并且由于内存问题在某一点之后停止。关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:0)

如果有人为此寻找答案,我已经通过找到一个组的最近邻居(tree.query_ball_point可以处理批次)并写入数据库然后处理下一组来解决它,而不是保留所有在记忆中。谢谢。