将numpy数组子集到多维超立方体中的行

2024-09-27 18:24:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个n x d形状的numpy数组。每一行代表R^d中的一个点。我想把这个数组过滤成在一个点的每个轴上的给定距离内的行——实际上是一个d维超立方体。你知道吗

在一维中,这可能是:

array[np.which(array < lmax and array > lmin)]

其中lmax和lmin是与点+距离相关的最大值和最小值。但我想在三维空间里做这个。d不是固定的,所以硬编码是行不通的。我检查了一下,如果lmax和lmin是d长度向量,上面的方法是否有效,但它只是将数组展平。你知道吗

我知道我可以把矩阵和点插入距离计算器空间距离获取某种距离度量,但这可能比一些简单的过滤(如果存在的话)要慢。你知道吗

事实上,我必须做这个计算可能数百万次意味着理想情况下,我想要一个快速的解决方案。你知道吗


Tags: and方法numpy距离编码whichnp代表
1条回答
网友
1楼 · 发布于 2024-09-27 18:24:11

你可以试试这个。你知道吗

def test(array):
    large = array > lmin
    small = array < lmax
    return array[[i for i in range(array.shape[0])
        if np.all(large[i]) and np.all(small[i])]]

对于每个iarray[i]是一个向量。向量的所有元素都应该在[lmin,lmax]范围内,并且这个计算过程可以矢量化。你知道吗

相关问题 更多 >

    热门问题