问题标签 [numpy-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 回答
1202 浏览

python - 我无法删除由 memmap 创建的文件

我无法删除文件创建numpy.memmap功能

当我运行del myclass(MyClass 的实例)时出现错误WindowsError: [Error 32] The process cannot access the file。如果我memmap以不面向对象的方式使用和删除文件,一切正常。所以我认为析构函数有问题。但为什么会发生呢?

0 投票
1 回答
1880 浏览

python - 将numpy数组转换为memmap

我在内存中生成了一些数据,我想将其转换为 numpy.memmap 以节省 RAM。我该怎么办?我的数据在:

我知道我可以初始化一个空的 numpy.memmap:

将 X_list_total_standardized 存储到 memmap 中最方便的方法是什么?谢谢

PS:下面的命令可以吗?

0 投票
1 回答
572 浏览

python - Python:通过函数传递memmap数组?

假设我正在使用非常大的数组(例如,~45GB)并试图通过一个 open 接受 numpy 数组的函数来传递它。最好的方法是:

  1. 将其存储为有限的内存?
  2. 将此存储的数组传递给只接受 numpy 数组的函数?
0 投票
0 回答
175 浏览

python - memmap数组上的图像均值减法

我有 memmap 数组包含这样的图像,其中每个图像都是一个大小为 (1,784) 的数组:

我想知道如何进行图像均值减法以标准化所有图像。

0 投票
0 回答
126 浏览

python - 无法对 memmap 数组的 pandas 数据帧执行 Groupby,因为它是不可散列的

predictions我有由三列组成的panada 数据框。我使用三个创建了这个数据框memmap array

现在我想在这个数据框的两列上进行分组,在第三列上取平均值,如下所示:

但它给了我一个错误,说 memmap 数组是不可散列的!它不能执行groupby。我真的需要这样做,groupby否则我必须做两个for循环,这需要永远,因为我的字典有1,000,000行。我想知道有人知道解决方案吗?谢谢

Edited celltreecolumns 是来自 的项目列表memmap arraypredict并且label只是普通列表。项目列表memmap array如下所示:单元格

预测数据框如下所示:

我收到以下错误:

0 投票
0 回答
449 浏览

python - numpy memmap 读取错误内存映射大小必须为正

我正在读取分区中的大型二进制文件。每个分区都使用numpy.memmap.

该文件由 1M 行组成,其中一行是 198 个 2 字节整数。一个分区有 1000 行长。

下面是代码片段:

partition_idx这里的偏移量是 1000 * 198 * 2 *partition_idx范围从[0:1000]. 计数为 1000。

我收到错误:内存映射大小必须为正

0 投票
2 回答
3030 浏览

python - NumPy memmap 性能问题

我有一个存储为 NumPy 内存映射的大型 (75000 x 5 x 6000) 3D 数组。如果我像这样简单地迭代第一个维度:

迭代发生得非常快。但是,当我尝试在更大程序的上下文中迭代同一个 memmap 时,对 memmap 的单独调用将花费多达 0.1 秒,而提取所有 75000 条记录将花费近 10 分钟。

较大的程序太长无法在这里重现,所以我的问题是:是否有任何已知问题会导致 memmap 访问显着减慢,也许如果 Python 内存中保存了大量数据?

在较大的程序中,用法如下所示:

第二个示例需要 10 多分钟才能执行。对线场景输出 = array[address]的计时,它只是从 memmap 中提取记录,在 0.0 和 0.5 之间变化 -提取一条记录需要半秒。

0 投票
0 回答
685 浏览

python - 从 numpy memmap 读取“存储空间不足”错误

我已经成功地使用以下命令写入 NumPy 内存映射:

当我尝试使用以下命令加载相同的内存映射时:

我收到以下错误:

我正在运行 64 位 Python 3.4.4。当实现 mmap 对象时,'bytes' 的值为 166400000,这远低于我的 numpy 上限 2147483647。为什么我可以写入这个数组但不能从中读取?

0 投票
1 回答
295 浏览

python - numpy有没有办法memmap一个大端复数?

我正在尝试从格式化为 complex64 但大端格式的非常大的文件中加载数据。由于它们的大小,我想使用 memmap。我可以像这样将数组加载为大端浮点数:

但是如果我尝试将其视为复数,它会恢复字节交换,即

但这要么创建数据副本,要么修改文件。有没有办法在不复制数据或修改现有文件的情况下完成这项工作?

0 投票
1 回答
1717 浏览

numpy - xarray 或 dask 真的支持内存映射吗?

到目前为止,在我的实验中,我尝试过:

  • xr.open_dataset使用chunksarg,它将数据加载到内存中。
  • 设置一个NetCDF4DataStore, 并调用ds['field'].values,它将数据加载到内存中。
  • 设置一个ScipyDataStorewith mmap='r',并将ds['field'].values数据加载到内存中。

从我所见,设计似乎不是围绕在内存映射数组上实际应用 numpy 函数,而是将小块加载到内存中(有时使用内存映射来这样做)。例如,这条评论这里还有一些相关的评论,关于 not xarray 无法确定一个 numpy 数组是否被映射。

我希望能够将数据表示和切片为xarray.Dataset,并能够调用.values(或.data)来获取ndarray,但让它保持映射(出于共享内存等目的)。

如果分块的 dask 操作至少可以在内存映射数组上操作,直到它真正需要改变某些东西,这也很好,这似乎是可能的,因为 dask 似乎是围绕不可变数组设计的。

不过,我确实发现了一个使用 xarray 的技巧,就是这样做的:

在这一点上,类似以下的工作无需将任何内容加载到内存中:

...xarray 显然不知道该数组已映射,并且不能np.copy为此类情况强加 a 。

是否有“支持”的方式在 xarray 或 dask 中进行只读内存映射(或就此而言的复制写入)?