簡體   English   中英

將numpy數組設置為d維超立方體內的行

[英]subsetting numpy array to rows within a d-dimensional hypercube

我有一個形狀為nx d的numpy數組。 每行代表R ^ d中的一個點。 我想將此數組過濾為僅在單個點的每個軸上給定距離內的行-就像是d維超立方體。

在1維中,這可能是:

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

其中lmax和lmin是與點+距離相關的最大值和最小值。 但是我想在d維中做到這一點。 d不是固定的,因此對其進行硬編碼不起作用。 我檢查了上面的內容在lmax和lmin是d長度向量的情況下是否可行,但這只是使數組變平了。

我知道我可以將矩陣和點插入到scipy.spatial.distance之類的距離計算器中,並獲得某種距離度量,但是這可能比某些簡單過濾(如果存在)要慢。

我可能必須進行數百萬次計算,這一事實意味着理想情況下,我想要一個快速的解決方案。

你可以試試看

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]范圍內,並且此計算過程可以向量化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM