我正在用Python编写一些代码(目前只是为了好玩),这些代码将在3d空间的每个点上存储一些数据。我基本上是在追求一个三维矩阵对象,它存储了一些允许我进行一些高级选择的任意对象,比如:
在上面的所有内容中,我需要得到某种输出,它将给出空间中的原始位置,以及存储在该位置的数据。
显然,numpy可以做我想做的事情,但它似乎高度优化了科学计算,并解决了如何获得我想要的数据,就像上面所说的,至今我都没有找到。
有没有更好的选择,或者我应该回去把我的头撞在墙上?:)
编辑:更多信息前三个答案让我意识到我应该包括:我不担心性能,这纯粹是一个概念的证明,我更喜欢干净的代码而不是良好的性能。我也会有数据为每个点在给定的三维空间,所以我猜一个备用矩阵是坏的?
下面是另一种常见的方法
让我们看看您的用例。
得到x=1,y=2,z=3的点。
得到y=2的所有点。
得到位置x=1,y=2,z=3的3个单位内的所有点。
获取point.getType()=“Foo”处的所有点
嗯。。。如果你真的希望用填充这个空间,那么你最好用一个密集的矩阵式结构,基本上是voxels。
如果你不想填满它,那就找一些更优化的。我将从octrees开始,它通常用于这样的事情。
numpy的一个优点是它非常快, e、 g.计算8000x8000邻接矩阵的pagerank需要毫秒。即使
numpy.ndarray
只接受数字,您也可以将数字/id对象映射存储在外部哈希表(即dictionary)中(dictionary又是一个高度优化的数据结构)。切片就像python中的列表切片一样简单:
如果您将一些所需的函数(距离)包装在某个核心矩阵和一个id对象映射散列上,那么您可以让您的应用程序在短时间内运行。
祝你好运!
相关问题 更多 >
编程相关推荐