问题标签 [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 读取某些行或列
我只是想问是否可以将 numpy 数组存储为 .npy 文件,然后使用 memmap 在某些行/列中查看它?
python - Numpy Memmap Ctypes 访问
我正在尝试使用 numpy memmap 使用一个非常大的 numpy 数组,将每个元素作为 ctypes 结构访问。
它似乎工作正常,但我在 python.exe 停止的 64 位 Windows 机器上遇到了错误。在事件查看器中,我看到错误模块名称是_ctypes.pyd
,异常代码是 0xc0000005,我认为这是一个访问异常。
我在 Linux 上似乎没有遇到同样的错误,尽管我的测试并不彻底。
我的问题是:
我的访问权限是否正确;IE。我使用
numpy.memmap.ctypes.data_as
正确吗?__str__
我定义了函数 (和__eq__
)的事实会My_Structure
改变它的大小吗?IE。它仍然可以在数组中用作uint32
吗?您认为有什么可能会导致这种行为吗?特别考虑到 Windows 和 Linux 之间的差异?
编辑:
在 big_array 元素上使用
ctypes.addressof
andctypes.sizeof
,看起来__str__
and__eq__
不会影响My_Structure
我在访问之前添加了一些断言
big_array
,发现我正在尝试访问big_array[-1]
,这解释了访问错误和崩溃。
这让问题 1 悬而未决:看起来我的代码在技术上是正确的,但我想知道是否有比使用 ctypes.pointer 更好的方法来访问 numpy 数组,这样我仍然可以获得使用 numpy 数组的好处(越界访问警告、负索引换行等)。下面的 Daniel 建议使用结构化的 numpy 数组,但是可以用它来进行位域访问吗?
python - 编辑使用 memmap 导入的现有 .npy 文件
我是使用 numpy.core.memmap 对象的新手,并且无法弄清楚如何使用 numpy.memmap() 编辑现有的 .npy 文件读入 python。例如,按照 Scipy.org 的示例,我可以创建一个对象并写入它,但是一旦创建,我就无法修改其内容。
这只是从内存中删除对象,但不会修改文件名处的对象。我也尝试过 numpy.memmap.flush(fpc) ,但这似乎也不起作用。
我从阅读其他帖子中了解到,可以简单地将编辑后的 .npy 文件复制到另一个位置,但这似乎在磁盘空间方面可能会出现问题。您不能修改现有的 .npy 文件是否正确?
python - Numpy Memmap WinError8
在使用该站点的丰富经验 6 年后,我的第一条 StackOverflow 消息。感谢大家为我和其他人提供的所有巨大帮助。
然而,这个问题让我完全困惑,我想向社区寻求帮助。
我有一个 175,759,360 字节的大原始字节“F”有序文件,我需要将其读入内存以使用 python/numpy 进行分析。目标是获得 np.uint16 dtypes 的 (613, 640, 224) numpy 数组。
我已经在类似的情况下多次成功,但在上一个项目中我遇到了一个我无法解决的问题。
我以前能够通过两种方式取得成功(np.memmap)
或使用普通的 np.fromfile
使用 np.memmap 的解决方案现在返回 WinError8 错误
并且使用 fromfile 的解决方案返回引用计数错误
我想寻求解决此问题的任何帮助。内存量应该不是问题,因为我已经在 8GB 和 32GB 内存机器上尝试过代码。我正在使用带有 Python 3.6.4 版和 numpy 1.14.2 版的 Win 10
先感谢您。
python - 使用 numpy 内存映射的 64 位系统中文件的最大大小是多少
我正在尝试使用大约 50 GB 的大文件。我正在尝试使用 numpy 内存映射访问文件。我看到用于内存映射的文件大小有一个限制,对于 32 位系统,它是 2GB。这是链接:https ://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.memmap.html
我想知道使用 numpy 内存映射以获得良好性能是否对文件大小有硬性限制。
python - numpy 内存映射上随机切片的效率
我有一个 20GB、100k x 100k 'float16' 2D 数组作为数据文件。我将它加载到内存中,如下所示:
然后我尝试从中读取切片。我需要采取的垂直切片实际上是随机的,但性能很差,或者我做错了什么?
分析:
我对比了其他形式的横截面切片,虽然不知道为什么会这样,但效果要好得多:
即使是这些 timeit 函数也不能准确地捕捉到性能下降,因为:
和....相比:
numpy-memmap - 可以推迟对 numpy.memmap 的操作吗?
考虑这个例子:
哪个输出
因此,这似乎b
不再是 amemmap
了,我认为这会迫使numpy
阅读整体a.npy
,从而违背了 memmap 的目的。因此我的问题是,可以将操作memmaps
推迟到访问时间吗?
我相信子类化ndarray
或memmap
可以工作,但对我的 Python 技能没有足够的信心来尝试它。
这是一个显示我的问题的扩展示例:
python - 在满足条件的非常大的 memmap 中获取下一个元素的索引
我有一个包含电流和电压数据的非常大(10-100 GB)文件的内存映射。从给定的起始索引,我想找到电压满足给定条件的下一个点的索引。
在一个相对较小的列表的情况下,我可以使用这样的迭代器来做到这一点:
但是因为我的memmap太大了,无法构建迭代器。有没有办法以 Pythonic 的方式执行此操作,而无需实际将数据加载到内存中?我总是可以采取丑陋的方法来读取数据块并循环遍历它,直到找到我需要的索引,但这似乎不优雅。
python - numpy.memmap 在有足够的可用内存时返回不足的内存
在 64 位 Windows 机器上的典型调用期间numpy.memmap()
,python 引发以下错误:
不同的 Windows 机器使用不同的文本引发相同的错误:
这是代码摘要:
此时 Python 只使用了 50MB 的内存。内存不足的原因是什么?
python - 将非常大的图像处理为 numpy 数组
我正在处理 .svs 格式的大于 8 GB 的图像。使用 openslide,我将它们读取为 1D numpy 数组。现在,为了将它们输入算法,我需要将它们重塑为图像形式,以处理像素位置相关信息。由于图像非常大,使用 PIL 将 numpy 数组转换为
给我一个错误size does not fit in int
。我试图通过将dtype
from更改为uint8
来解决此错误,uint64
但是,尽管64GB RAM and 3 TB memory
我的工作站上有,但我的 python 一直在崩溃。
然后我尝试使用以下方法加载 numpy 数组memmap
:
现在上面的代码给了我一个.tif
格式的图像。但是,我无法处理它。我分析不出来为什么?我发现当我尝试读取该图像并打印其形状时。
AttributeError:“NoneType”对象没有属性“形状”
所以,这种方式对我来说也失败了。然后我尝试以图像的形状(44331、64625、3)重塑numpy数组,但出现以下错误
ValueError:序列太大;不能大于 32
谁能帮我处理这样的图像。我在 x、y、z 像素位置对这些图像进行了注释,并将这些注释作为基本事实处理,我需要将我的 numpy 数组转换为图像的形式。
任何帮助都会很棒。
编辑:我现在正在重塑 numpy 数组。但是,仍然不知道如何使用 numpy 文件作为我的数据集输入而不是图像。