问题标签 [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 - numpy.memmap 如何在具有多个数据集的 HDF5 上工作?
我正在尝试在 HDF5 文件中对单个数据集进行内存映射:
但是,下面的输出表明 中的值与 中的值fp
不匹配dset01
。
我猜,也许我应该设置一个“偏移”值np.memmap
。这是我代码中的错误吗?如果是这样,我如何找出 HDF5 中每个数据集的正确偏移值?
python - 在大型二进制文件中重新排序行的最佳方法是什么?
我有一些想要连接的大型数据文件(32 x 非常大)。但是,数据是按错误的顺序收集的,所以我还需要对行重新排序。
到目前为止,我正在做的是:
我实际上是在一个包含 2 个以上文件的 for 循环中执行此操作的,但是您明白了。
这是最有效的方法吗?恐怕应用程序channel_mapping
会将数据写入内存并减慢整个过程。事实上,这比简单地连接文件要慢得多。
python - 如何使用 numpy memmap 将 numpy 数组完全放在 RAM 上?
我想使用一个memmap分配的numpy数组,可以使用joblib并行处理,即不同进程之间的共享内存。但我也希望大数组完全存储在 RAM 上,以避免 memmap 对磁盘进行写入/读取。我有足够的 RAM 来存储整个数组,但是使用 np.zeros() 而不是 memmap 会使并行化复杂化,因为前者将内存分配给进程本地。我如何实现我的目标?
例子:
之后:
如果我用 np.zeros 分配 x_shared ,如下所示,我不能使用并行化。
python - numpy memmap 一次可以处理的最大进程数是多少?
我在这里看到对于多处理,应该使用 numpy memmaps
由于这个问题经常发生在基于 numpy 的数据结构的科学计算中,joblib.Parallel 为大型数组提供了一种特殊处理,以自动将它们转储到文件系统上,并将引用传递给 worker 以使用 numpy 将它们作为该文件上的内存映射打开numpy.ndarray 的 .memmap 子类。这使得在所有工作进程之间共享一段数据成为可能。
我想知道 memmap 是否可以处理最大数量的进程。我问是因为我的 jupyter notebook 似乎在 24 个进程访问同一个大内存映射时崩溃了。如果这是由于数量或流程造成的,我正在尝试隔离。
python - 在 mmap_mode 中 Numpy 加载 *.npz 文件的一部分
我知道已经存在类似的问题,但尚未得到回答。
我有一个非常大的 numpy 数组保存在 npz 文件中。我不希望它被完全加载(我的 RAM 无法完全处理它),而只想加载它的一部分。
文件是这样生成的:
这就是我想加载它的方式:
现在,要实际访问我感兴趣的数组部分,我应该输入
但是虽然这块很小,python 首先加载整个数组(我知道是因为我的 RAM 被填满了),然后显示这个小部分。如果我直接写也会发生同样的情况
我究竟做错了什么?
numpy - 当可用 RAM 小于文件大小时,Numpy memmap 使用 Pytorch Dataloader 节流
我正在处理一个太大而无法放入 RAM 的数据集。我目前正在尝试的解决方案是使用 numpy memmap 使用 Dataloader 一次加载一个样本/行。解决方案如下所示:
当可用的 RAM 量大于 memmap 文件的大小时,数据加载速度很快。我得到大约60 批次/秒。但是,当可用 RAM 小于 memmap 文件的大小时,我得到大约 3 batches/second。
我在尝试不同大小的 memmap 文件时发现了这一点。
为什么会这样?如果 Dataloader + memmap 将在可用 RAM < memmap 文件大小时节流,这将破坏解决方案的要点。
我观察到,当可用 RAM < memmap 文件大小时,磁盘 i/o 的读取速度为 500MB/s。这远高于加载一批 4096 个样本(接近 8MB/s)所需的理论读取量。
python - 改组和导入保存的 numpy 文件的几行
我有 2 个保存的 .npy 文件:
X_train 是猫和狗的图像(猫在第一半,狗在第二半,未打乱),并用 Y_train 映射为 0 和 1。因此 Y_train 是 [1,1,1,1,1,1,.... .....,0,0,0,0,0,0]。
我想随机导入 X 中的 256 张图像(猫和狗图像均占近 50-50%)及其在 Y 中的映射。由于数据很大,我无法在我的 RAM 中导入 X_train。
因此我尝试了(第一种方法):
这给出了以下错误:
我也尝试过(第二种方法):
这输出:
在第二种方法中,我将只获得猫图像,因为 np.memmap 将仅收集第 256 张图像。那么洗牌就没有用了。
请告诉我如何用任何方法做到这一点。
python - 如何读取大文本文件避免逐行读取 :: Python
我有一个大数据文件(N,4),我正在逐行映射。我的文件是 10 GB,下面给出了一个简单的实现。虽然以下工作,但它需要大量的时间。
我想实现这个逻辑,以便直接读取文本文件并且我可以访问元素。此后,我需要根据第 2 列元素对整个(映射的)文件进行排序。
我在网上看到的示例假设d
使用较小的数据(f[:] = d[:]
d
PS:我知道如何使用 加载文件np.loadtxt
并对其进行排序argsort
,但是对于 GB 文件大小,该逻辑失败(内存错误)。将不胜感激任何方向。
python - 如何在 Python 中对 HDF5 文件进行排序
我正在使用 h5py 包在 HDF5 文件中存储一个大文本文件(10 GB,N 行和 4 列)。主要是因为我不想使用我的 RAM。
我想根据第二列对文件中的项目进行排序。关于如何做到这一点的任何建议?
我也听说可以分块完成,请问有什么帮助吗?
谢谢!