你可以考虑它作为阵列2的上外操作获得通过broadcasting的成对距离维向量如下:
vecs = np.stack((x, y)).T
np.linalg.norm(vecs[np.newaxis, :] - vecs[:, np.newaxis], axis=2)
例如,
In [1]: import numpy as np
...: x = np.array([1, 2, 3])
...: y = np.array([3, 4, 6])
...: vecs = np.stack((x, y)).T
...: np.linalg.norm(vecs[np.newaxis, :] - vecs[:, np.newaxis], axis=2)
...:
Out[1]:
array([[ 0. , 1.41421356, 3.60555128],
[ 1.41421356, 0. , 2.23606798],
[ 3.60555128, 2.23606798, 0. ]])
这里,(我,Ĵ)个条目是之间的距离我'和第Ĵ“个向量。
的角度之间的配对差异的情况是类似的,但更简单,因为你只需要一个维度处理:
In [2]: a = np.array([10, 12, 15])
...: a[np.newaxis, :] - a[: , np.newaxis]
...:
Out[2]:
array([[ 0, 2, 5],
[-2, 0, 3],
[-5, -3, 0]])
此外,plt.scatter
不关心结果给出矩阵,放在一起使用疑问句的符号的一切,你可以做这样的事情
vecs = np.stack((x, y)).T
f = np.linalg.norm(vecs[np.newaxis, :] - vecs[:, np.newaxis], axis=2)
d = angle[np.newaxis, :] - angle[: , np.newaxis]
plt.scatter(f, d)
因此,通过距离获取角度的情节,如果我理解正确的话,你希望的方式来计算255x255不同的可能性来计算距离/角度b在每个点之间(可能除了实际点本身)? – Alex
是的!但是(255x255)/ 2种不同的可能性。 – larry
是的,你是对的...... – Alex