[英]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.