问题标签 [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.
python - 我无法删除由 memmap 创建的文件
我无法删除文件创建numpy.memmap
功能
当我运行del myclass
(MyClass 的实例)时出现错误WindowsError: [Error 32] The process cannot access the file
。如果我memmap
以不面向对象的方式使用和删除文件,一切正常。所以我认为析构函数有问题。但为什么会发生呢?
python - 将numpy数组转换为memmap
我在内存中生成了一些数据,我想将其转换为 numpy.memmap 以节省 RAM。我该怎么办?我的数据在:
我知道我可以初始化一个空的 numpy.memmap:
将 X_list_total_standardized 存储到 memmap 中最方便的方法是什么?谢谢
PS:下面的命令可以吗?
python - Python:通过函数传递memmap数组?
假设我正在使用非常大的数组(例如,~45GB)并试图通过一个 open 接受 numpy 数组的函数来传递它。最好的方法是:
- 将其存储为有限的内存?
- 将此存储的数组传递给只接受 numpy 数组的函数?
python - memmap数组上的图像均值减法
我有 memmap 数组包含这样的图像,其中每个图像都是一个大小为 (1,784) 的数组:
我想知道如何进行图像均值减法以标准化所有图像。
python - 无法对 memmap 数组的 pandas 数据帧执行 Groupby,因为它是不可散列的
predictions
我有由三列组成的panada 数据框。我使用三个创建了这个数据框memmap array
。
现在我想在这个数据框的两列上进行分组,在第三列上取平均值,如下所示:
但它给了我一个错误,说 memmap 数组是不可散列的!它不能执行groupby
。我真的需要这样做,groupby
否则我必须做两个for
循环,这需要永远,因为我的字典有1,000,000
行。我想知道有人知道解决方案吗?谢谢
Edited
cell
和tree
columns 是来自 的项目列表memmap array
。predict
并且label
只是普通列表。项目列表memmap array
如下所示:单元格
预测数据框如下所示:
我收到以下错误:
python - numpy memmap 读取错误内存映射大小必须为正
我正在读取分区中的大型二进制文件。每个分区都使用numpy.memmap
.
该文件由 1M 行组成,其中一行是 198 个 2 字节整数。一个分区有 1000 行长。
下面是代码片段:
partition_idx
这里的偏移量是 1000 * 198 * 2 *partition_idx
范围从[0:1000]
. 计数为 1000。
我收到错误:内存映射大小必须为正
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 之间变化 -提取一条记录需要半秒。
python - 从 numpy memmap 读取“存储空间不足”错误
我已经成功地使用以下命令写入 NumPy 内存映射:
当我尝试使用以下命令加载相同的内存映射时:
我收到以下错误:
我正在运行 64 位 Python 3.4.4。当实现 mmap 对象时,'bytes' 的值为 166400000,这远低于我的 numpy 上限 2147483647。为什么我可以写入这个数组但不能从中读取?
python - numpy有没有办法memmap一个大端复数?
我正在尝试从格式化为 complex64 但大端格式的非常大的文件中加载数据。由于它们的大小,我想使用 memmap。我可以像这样将数组加载为大端浮点数:
但是如果我尝试将其视为复数,它会恢复字节交换,即
但
但这要么创建数据副本,要么修改文件。有没有办法在不复制数据或修改现有文件的情况下完成这项工作?
numpy - xarray 或 dask 真的支持内存映射吗?
到目前为止,在我的实验中,我尝试过:
xr.open_dataset
使用chunks
arg,它将数据加载到内存中。- 设置一个
NetCDF4DataStore
, 并调用ds['field'].values
,它将数据加载到内存中。 - 设置一个
ScipyDataStore
withmmap='r'
,并将ds['field'].values
数据加载到内存中。
从我所见,设计似乎不是围绕在内存映射数组上实际应用 numpy 函数,而是将小块加载到内存中(有时使用内存映射来这样做)。例如,这条评论。这里还有一些相关的评论,关于 not xarray 无法确定一个 numpy 数组是否被映射。
我希望能够将数据表示和切片为xarray.Dataset
,并能够调用.values
(或.data
)来获取ndarray
,但让它保持映射(出于共享内存等目的)。
如果分块的 dask 操作至少可以在内存映射数组上操作,直到它真正需要改变某些东西,这也很好,这似乎是可能的,因为 dask 似乎是围绕不可变数组设计的。
不过,我确实发现了一个使用 xarray 的技巧,就是这样做的:
在这一点上,类似以下的工作无需将任何内容加载到内存中:
...xarray 显然不知道该数组已映射,并且不能np.copy
为此类情况强加 a 。
是否有“支持”的方式在 xarray 或 dask 中进行只读内存映射(或就此而言的复制写入)?