- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理大小为 NxN ~(100k x 100k)
的大型密集方阵,该矩阵太大而无法放入内存。
经过一些研究,我发现大多数人通过使用 numpy 的 memap 或 pytables 包来处理大型矩阵。然而,我发现这些软件包似乎有很大的局限性。它们似乎都不提供支持 ASSIGN 值来沿多个维度将切片列出到磁盘上的矩阵。
我想寻找一种有效的方法来将值分配给大型密集方阵M
,例如:
M[0, [1,2,3], [8,15,30]] = np.zeros((3, 3)) # 或
M[0, [1,2,3,1,2,3,1,2,3], [8,8,8,15,15,15,30,30,30]] = 0 # 用于内存映射
M[0, [1,2,3], [8,15,30]]
始终会将切片复制到 RAM 中,因此作业似乎不起作用。对于 pytables,不支持沿多于 1 个维度的列表切片。目前,我只是沿着一个维度切片,然后再切片另一个维度(即 M[0, [1,2,3]][:, [8,15,30]]
)。此解决方案的 RAM 使用量将随 N 缩放,这比处理整个数组 (N^2) 更好,但仍然不理想。
此外,pytables 似乎并不是处理具有大量行的矩阵的最有效方法。 (或者是否可以通过指定 block 大小来消除此消息?)我收到以下警告消息:
The Leaf ``/M`` is exceeding the maximum recommended rowsize (104857600 bytes);
be ready to see PyTables asking for *lots* of memory and possibly slow
I/O. You may want to reduce the rowsize by trimming the value of
dimensions that are orthogonal (and preferably close) to the *main*
dimension of this leave. Alternatively, in case you have specified a
very small/large chunksize, you may want to increase/decrease it.
我只是想知道是否有更好的解决方案来为大型矩阵的任意二维切片赋值?
最佳答案
首先,请注意,在 numpy 中(不确定 pytables)M[0, [1,2,3], [8,15,30]]
将返回一个形状数组(3,)
对应元素 M[0,1,8]
、M[0,2,15]
和 M [0,3,30]
,因此将 np.zeros((3,3))
分配给它会引发错误。
现在,以下内容对我来说效果很好:
np.save('M.npy', np.random.randn(5,5,5)) # create some dummy matrix
M = np.load('M.npy', mmap_mode='r+') # load such matrix as a memmap
M[[0,1,2],[1,2,3],[2,3,4]] = 0
M.flush() # make sure thing is updated on disk
del M
M = np.load('M.npy', mmap_mode='r+') # re-load matrix
print(M[[0,1,2],[1,2,3],[2,3,4]]) # should show array([0., 0., 0.])
关于python - 为大型密集方阵的列表切片赋值 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59268049/
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 5 个月前关
我正在尝试使用摄像机跟踪多个人。我不想使用 blob 分割技术。我想做什么: 执行背景减法以获得隔离人们运动的掩码。 在这些区域执行基于网格的光流 -我最好的选择是什么? 我正在努力实现。我已经尝试过
OpenCV 有 very good documentation on generating SIFT descriptors ,但这是“弱 SIFT”的一个版本,其中关键点由原始 Lowe algo
我有一个 cholmod_dense 数据结构: cholmod_dense* ex = cholmod_l_solve(CHOLMOD_A, L, B, &com); 我想提取这些值并将它们复制到另
这是先前发布的关于在 python 中使用 OpenCVs 密集筛选实现的问题的后续问题 (OpenCV-Python dense SIFT)。 使用建议的代码进行密集筛选 dense=cv2
我是计算机视觉的新手。我正在学习 Dense SIFT 和 HOG。对于密集 SIFT,算法只是将每个点视为一个有趣的点并计算其梯度向量。 HOG 是另一种用梯度向量描述图像的方法。 我认为 Dens
我正在尝试使用 openCV-python 2.4 计算密集 SIFT import cv2 def gen_sift_features(gray, step_size, gamma): de
我正在使用 OpenCV 实现词袋图像分类器。最初我测试了在 SURF 关键点中提取的 SURF 描述符。我听说 Dense SIFT(或 PHOW)描述符更适合我的目的,所以我也尝试了它们。 令我惊
我有一个密集的 Ax=b 类型的方程组要在我的 C++ 程序中求解,我希望在 boost 中使用 UBLAS 来实现该解决方案。在其他一些问题中,我发现人们正在使用扩展 LAPACK,但不幸的是,它似
我目前有一台配备 Opteron 275 (2.2Ghz)(双核 CPU)和 4GB RAM 以及速度非常快的硬盘的机器。我发现即使是使用 C++ 模板(想想 boost 等)编译一些简单的项目时,我
我是一名优秀的程序员,十分优秀!