首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用指针的h5py对称数组

使用指针的h5py对称数组
EN

Stack Overflow用户
提问于 2012-11-29 15:21:20
回答 1查看 190关注 0票数 1

我一直在寻找一种方法来创建一个自定义的h5py数组,它最终是对称的。理想情况下,它应该是一个数组,以便在创建它时具有a[i][j]a[j][i]指向的单个值。这样做的原因是,我将把一个很大的距离向量写入一个正方形矩阵。向量和方阵太大,无法保存在内存中,所以我想要一个相对较快的解决方案来创建方阵。

EN

回答 1

Stack Overflow用户

发布于 2013-05-27 23:15:57

我建议用一点额外的逻辑来做这件事,使用一个一维数组来存储矩阵的上三角形。将一维数组<->中的索引映射为如下所示的映射:

代码语言:javascript
复制
[[0  1  2  3 ]
 [x  4  5  6 ]
 [x  x  7  8 ]
 [x  x  x  9 ]]

您可以为此编写一个函数,如下所示:

代码语言:javascript
复制
from __future__ import division
def tri_ravel_factory(n_cols):
    def tri_ravel(j, k):
        assert j < n_cols, 'j out of range'
        assert k < n_cols, 'j out of range'
        assert j >= 0, 'j out of range'
        assert k >= 0, 'j out of range'        
        if k < j:
            j, k = k, j
        #return sum(n_cols - tmp for tmp in range(0, j)) + (k - j)
        return j * n_cols - (j * (j-1))//2 + (k-j)
    return tri_ravel


test_ravel = tri_ravel_factory(4)
indx = test_ravel(1, 0)    

这只会给你带来两倍的好处。使用稀疏数组、即时计算所需的距离,或者找到一种方法而不必计算大多数距离(例如,如果您只关心与distance < r的配对),可能会更好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13620719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档