问题标签 [memmap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
29 浏览

python - 不允许 Numpy memmap 负维度

Numpy memmap 参考页面

当 mode != 'r' 时,即使超出文件末尾的正偏移量也是有效的;

上面的代码会产生一个错误:

如果偏移被移除,则没有错误。

有人有问题吗?你是怎么解决的?

谢谢

0 投票
1 回答
390 浏览

nim-lang - Nim:使用只读内存映射文件

我刚刚开始使用 Nim,因此这可能是一个简单的问题。我们需要对存储在文件中的数据进行多次查找。其中一些文件太大而无法加载到内存中,因此采用 mmapped 方法。我可以通过 memfiles 对文件进行映射,并且我手边有一个指针或 MemSlice。文件和内存区域是只读的,因此具有固定大小。我希望我能够以不可变的固定大小字节和字符数组的形式访问数据,而无需复制它们,利用所有可用于 seq、数组、字符串等的现有功能。所有 MemSlice / string 方法都复制数据,这是公平的,但不是我想要的(在我的用例中不需要)。

我了解数组、字符串等类型有一个指向数据的指针和一个 len 字段。但是找不到用指针和 len 创建它们的方法。我认为这与所有权和对内存的引用有关,这可能比我的切片寿命更长。

更新:我确实找到了https://forum.nim-lang.org/t/4680#29226,它解释了如何使用 OpenArray,但 OpenArray 只允许作为函数参数,而你 - 如果我没记错的话 - 它是不像普通数组。

谢谢你的帮助

0 投票
0 回答
261 浏览

python - 更改图像数据的 numpy 形状的尺寸顺序

我正在使用 numpy 和 nibabel lib 从 nii 文件加载数据。这是我加载图像数据的代码

输出(图像属性)如下图所示:

“(-1000.0, 2976.0, (512, 512, 193), numpy.memmap)”

当我想使用下面的代码使用 matplotlib 绘制图像时,输出图像似乎被裁剪为使用 512x512x193 以上的图像形状。当我想从 x 和 y 绘制切片时,如何更改尺寸,以便不会裁剪图像?绘制切片 z 似乎没问题。

Ex1:绘制 X 切片并裁剪图像

在此处输入图像描述

Ex2:在图像正常的地方绘制 Z

在此处输入图像描述

0 投票
1 回答
36 浏览

matlab - Matlab:读取大型二进制文件的部分/序列的最快方法

我想从一个大的(约 11 GB)二进制文件中读取部分内容。当前可行的解决方案是使用 加载整个文件 ( raw_data) fread(),然后裁剪出感兴趣的部分 ( data)。

问题:是否有更快的方法来读取文件的小部分(占总文件的 1-2%,部分顺序读取),给定 Matlab 中的二进制掩码(即特定字节的逻辑索引)?具体如下。

我的具体案例的注意事项:

  • data感兴趣的(26+e6 字节,或约 24 MB)大约是raw_data(1.2e+10 字节或约 11 GB)的 2%
  • 每 600.000 字节包含 ca 6.500 字节读取,可以分解为大约 1.200 个读取跳过周期(例如“读取 10 个字节,跳过 5000 个字节”)。
  • 整个文件的读取指令可以分解为大约 20.000 个类似但(不完全相同)的读取跳过周期(即大约 20.000x1.200 个读取跳过周期)
  • 从 GPFS(并行文件系统)读取文件
  • 过多的 RAM、最新的 Matlab 版本和所有工具箱都可用于该任务

我最初关于 fread-fseek 循环的想法被证明比读取整个文件要慢得多(见下面的伪代码)。分析显示fread()是最慢的(被调用超过一百万次可能对这里的专家来说是显而易见的)。

我考虑的替代方案:memmapfile()[ ref ] 据我所知,没有可行的读取多个小部分。MappedTensor库可能是我要研究的下一件事。相关但没有帮助,只是链接到文章:1 , 2


仅供参考:为了获得概览和透明度,我编制了一些图(下图)的第一个 ca 6.500 读取位置(我的实际数据),在折叠成 fread-fseek 对后,可以总结为 1.200 fread- fseek 对。

f_reads(字节) f_skips(字节) 读取位置