Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python可视化大型数据集_Python_Numpy_Mayavi - Fatal编程技术网

用python可视化大型数据集

用python可视化大型数据集,python,numpy,mayavi,Python,Numpy,Mayavi,我原来的帖子在下面,但我认为它可能没有它应该是清楚的。因此,澄清: 我希望能够快速访问大型数据集的三维视图。我目前使用的3D字段在以文本形式存储时为千兆字节,但我可能希望将来转到更大的字段。在内存中处理大量千兆字节的数据是不现实的,在显示器上绘制数百万个无法提供额外信息的点也是不合理的。相反,我希望有一个环境,其中大部分数据存储到磁盘,只有与给定绘图相关的值才会读入内存。我希望mayavi可以通过简单地用numpy memmap替换普通数组来轻松实现这一点,但这并不奏效 我可以将字段拆分为较小的

我原来的帖子在下面,但我认为它可能没有它应该是清楚的。因此,澄清:

我希望能够快速访问大型数据集的三维视图。我目前使用的3D字段在以文本形式存储时为千兆字节,但我可能希望将来转到更大的字段。在内存中处理大量千兆字节的数据是不现实的,在显示器上绘制数百万个无法提供额外信息的点也是不合理的。相反,我希望有一个环境,其中大部分数据存储到磁盘,只有与给定绘图相关的值才会读入内存。我希望mayavi可以通过简单地用numpy memmap替换普通数组来轻松实现这一点,但这并不奏效

我可以将字段拆分为较小的卷,并独立处理这些卷,或者对较大的卷进行分辨率较低的单独绘图,但我希望有可用的工具为我处理此问题。我不一定需要一个交互式的3D环境来探索数据,但是如果在我声明绘图参数时,数据的一些切割或平均可以在“幕后”处理,那就太好了

这可能吗


我正在用mayavi可视化3D区域。我将磁盘上的字段存储在文本文件中,每行一个值(如果我处理多个字段,则为多个值)。这些文件可能会变得相当大:现在我正在寻找一到两个千兆字节,但这在未来可能会增加。因为我不能将字段完全加载到内存中,所以我想我应该使用numpy内存映射来处理数据。不幸的是,mayavi对整个数据集执行数组操作,因此当我尝试执行
mlab.pipeline.scalar\u 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
有没有一个好的方法来解决这个问题,或者说我是不是遇到了玛雅维所能处理的极限?我已经看到了vtk在python中被推荐用于可视化,而且(据我所知)mayavi只是vtk的前端,我想我可以绕过mayavi试图使用的数组操作。这是路吗?请注意,我对这些都不是很有经验,所以如果我应该使用一个完全不同的工具来完成这项工作,我很乐意研究它(只要它是免费的)


谢谢

最好的方法是尝试而不是绘制100M数据点。你无论如何也看不到它们。试着找出另一种方式来显示您需要的内容。
memmap
-使用文本文件并不能满足您的需要。因此,您需要存储数据,例如使用
ndarray.tofile
。但我认为这还不足以让它神奇地工作……错误是显而易见的,当您的约束条件是您试图使用需要大量内存的巨大数据集时,没有有效的方法来调试内存不足的问题。tom10是完全正确的,你无论如何都无法理解一个有数百万个数据点的可视化。所以没有好的方法自动只显示与给定视图相关的数据?Moarningsun-我调用memmap为具有正确形状的数组生成一个numpy文件,然后根据文本数据设置数组中的值。如果numpy数组对您有用,您可以使用pytables hdf5作为磁盘和切片上的存储以及所需的只读部分。切片是在读取时立即执行的,因此不会将内存浪费在无用信息上。这在高能物理中也有同样的问题。最好的方法是尝试而不是绘制100米的数据点。你无论如何也看不到它们。试着找出另一种方式来显示您需要的内容。
memmap
-使用文本文件并不能满足您的需要。因此,您需要存储数据,例如使用
ndarray.tofile
。但我认为这还不足以让它神奇地工作……错误是显而易见的,当您的约束条件是您试图使用需要大量内存的巨大数据集时,没有有效的方法来调试内存不足的问题。tom10是完全正确的,你无论如何都无法理解一个有数百万个数据点的可视化。所以没有好的方法自动只显示与给定视图相关的数据?Moarningsun-我调用memmap为具有正确形状的数组生成一个numpy文件,然后根据文本数据设置数组中的值。如果numpy数组对您有用,您可以使用pytables hdf5作为磁盘和切片上的存储以及所需的只读部分。切片是在读取时立即执行的,因此不会将内存浪费在无用信息上。这在高能物理中也有同样的问题。最好的方法是尝试而不是绘制100米的数据点。你无论如何也看不到它们。试着找出另一种方式来显示您需要的内容。
memmap
-使用文本文件并不能满足您的需要。因此,您需要存储数据,例如使用
ndarray.tofile
。但我认为这还不足以让它神奇地工作……错误是显而易见的,当您的约束条件是您试图使用需要大量内存的巨大数据集时,没有有效的方法来调试内存不足的问题。tom10是完全正确的,你无论如何都无法理解一个有数百万个数据点的可视化。所以没有好的方法自动只显示与给定视图相关的数据?Moarningsun-我调用memmap为具有正确形状的数组生成一个numpy文件,然后根据文本数据设置数组中的值。如果numpy数组对您有用,您可以使用pytables hdf5作为磁盘和切片上的存储以及所需的只读部分。切片是在读取时立即执行的,因此不会将内存浪费在无用信息上。这被用于高能物理,它们也面临同样的问题。