首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么矩阵(在R中)比包含相同数据的图像文件要慢和大得多?

为什么矩阵(在R中)比包含相同数据的图像文件要慢和大得多?
EN

Stack Overflow用户
提问于 2016-02-02 15:39:44
回答 2查看 298关注 0票数 0

我在处理原始成像质谱数据。这种数据非常类似于一个传统的图像文件,除了3个彩色通道之外,我们还有对应于我们正在测量的离子数量的通道(在我的例子中,是300)。数据最初是以专有格式存储的,但可以将其导出为具有以下格式的表形式的.txt文件:

x,y,z,i(强度),m(质量)

正如你所想象的那样,这些文件可能是巨大的。典型的图像可能是256x256x20,相当于1310720像素。如果每个通道都有300个质量通道,这就会给出一个有393216000行和5列的表。这太大了!也就不适合记忆了。即使我选择了较小的数据子集(例如单个块),文件的处理速度也很慢。相比之下,专有软件能够非常快地加载和处理这些文件,例如,只需一两秒钟就能将文件打开到内存中。

我希望我已经说清楚了。有人能解释一下吗?为什么两个包含完全相同数据的文件会有如此不同的大小和速度呢?如何更快地处理图像数据矩阵?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-02 16:10:09

有人能解释一下吗?

是的

为什么两个包含完全相同数据的文件会有如此不同的大小和速度呢?

R使用的是默认的数字类型。因此,数据帧的存储容量大约是16 is。专有软件最有可能是使用浮点作为底层类型,从而将内存需求减少到8Gb。

如何更快地处理图像数据矩阵?

买一台32 Buy的电脑。即使使用32 in的计算机,考虑使用data.table在R中使用通过引用完成的操作,因为R喜欢复制数据帧。

或者,您可能希望迁移到Python/熊猫进行处理,并明确使用dtype=float32。

更新

如果你想和R待在一起,看一看bigmemory软件包,链接,尽管我想说的是,处理这个问题不是为了一个心脏虚弱的人。

票数 1
EN

Stack Overflow用户

发布于 2016-03-14 14:03:22

这个问题的答案有点深奥,而且对我的数据集非常具体,但可能会引起其他人的兴趣。我的数据非常稀疏,也就是说,我的矩阵中的大多数值都是零。因此,我能够使用Matrix包(大写重要)显着地缩小数据的大小,该包旨在更有效地处理稀疏矩阵。为了实现这个包,我只插入了一行:

代码语言:javascript
复制
data <- Matrix(data)

节省的空间数量将根据数据集的稀疏性而有所不同,但在我的示例中,我将节省1.8 GB到156 Mb。Matrix的行为就像一个matrix,因此不需要更改我的其他代码,速度也没有明显的变化。稀疏性显然是专有格式可以利用的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35157676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档