在python中可视化大型数据集

时间:2015-06-07 23:40:26

标签: python numpy mayavi

我的原始帖子在下面,但我认为它可能并不像它应该的那样清晰。所以,澄清:

我希望能够快速访问大型数据集的3D视图。我正在使用的3D字段在存储为文本时是千兆字节,但我可能希望将来继续使用更大的字段。在内存中使用许多千兆字节的数据是不切实际的,在显示器上绘制数百万个点并不能为您提供额外信息是不合理的。相反,我想要一个大多数数据存储到磁盘的环境,只有与给定绘图相关的值才会被读入内存。我希望mayavi可以通过简单地用numpy memmap替换普通数组来轻松实现这一点,但这不起作用。

我可以将字段拆分成较小的卷并单独使用这些卷,或者为较大的卷执行分辨率较低的单独绘图,但我希望有可用的工具可以为我处理。我不一定需要一个交互式的3D环境来探索数据,但如果我在声明绘图参数时可以“在引擎盖下”处理一些数据的切割或平均,这将是很好的。

这可能吗?

我正在研究mayavi中3D场的可视化。我将字段存储在磁盘上的文本文件中,每行一个值(如果我使用多个字段,则为多个值)。这些文件可能会变得非常大:现在我正在看一两千兆字节,但这可能会在未来增加。由于我无法将字段完全加载到内存中,我以为我会使用numpy内存映射来处理数据。不幸的是mayavi对整个数据集进行了数组操作,所以当我尝试mlab.pipeline.scalar_field(memmap)时,我会遇到这样的错误:

Traceback (most recent call last):
  File "C:\Anaconda\lib\site-packages\traits\trait_notifiers.py", line 340, in __call__
    self.handler( *args )
  File "C:\Anaconda\lib\site-packages\mayavi\sources\array_source.py", line 181, in _scalar_data_changed
    img_data.point_data.scalars = numpy.ravel(numpy.transpose(data))
  File "C:\Anaconda\lib\site-packages\numpy\core\fromnumeric.py", line 1367, in ravel
    return asarray(a).ravel(order)
MemoryError

有没有一个好方法可以解决这个问题,还是我违背了mayavi可以处理的限制?我已经看到vtk推荐用于python中的可视化,因为(据我所知)mayavi只是vtk的前端,我想我可以绕过mayavi尝试使用的数组操作。这是要走的路吗?请注意,我对这些都不是很有经验,所以如果我应该使用完全不同的工具来完成这项任务,我很乐意调查它(只要它是免费的)。

谢谢!

0 个答案:

没有答案