我的数组颠簸。我想找到距每个点都在ε距离之内的点数。
我当前的代码是(对于n * 2数组,但是通常我希望该数组为n * m)
epsilon = np.array([0.5, 0.5])
np.array([ 1/np.float(np.sum(np.all(np.abs(X-x) <= epsilon, axis=1))) for x in X])
但是,当涉及到一百万行50列的数组时,此代码可能并不高效。有没有更好,更有效的方法?
答案 0 :(得分:1)
例如数据
X = np.random.rand(10, 2)
您可以使用广播解决此问题:
1 / np.sum(np.all(np.abs(X[:, None, ...] - X[None, ...]) <= epsilon, axis=-1), axis=-1)