[英]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])]]
對於每個i
, array[i]
是一個向量。 向量的所有元素應在[lmin,lmax]范圍內,並且此計算過程可以向量化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.