我尝试了 np.hypot() 和 np.linalg.norm() 但它们都有一些问题(至少我是如何使用 thm 的)。
我很确定 np.hypot 只能计算 2-d distance。如果我有一个测试点 P (1,1,1) 和一个网格点 G (3,3,3),那么网格点 G 的返回值将类似于:((3-1)^2+( 3-1)^2)^(0.5) = 2.82
我可以直接调用 np.hypot,而不必循环通过网格点(我猜循环很慢,因此很糟糕),并且我在 3-d 的所有网格点处返回了这些到测试点的距离值meshgrid,但不计算 z 依赖关系(即 (1,2,0) 处的 d = (1,2,3) 处的 d:
#crystal_lattice structure
x,y,z = np.linspace(-2,2,5),np.linspace(-2,2,5),np.linspace(-2,2,5)
xx,yy,zz = np.meshgrid(x,y,z)
#testpoint
point = np.array([1,1,1])
d = np.hypot(xx-1,yy-1,zz-1)
使用 np.linalg.norm,我不知道如何在网格上的所有点上按元素计算返回值,传入的参数似乎是点 A(网格点)和点 B(测试点),但后来我除了循环之外,想不出任何方法来计算所有网格点,如下所示:
for i in x:
for j in y:
for k in z:
#not mapped back to a gridpoint, do not know what to do
d = np.linalg.norm(np.array([i,j,k])-point)
有谁知道我如何为 3d 网格上的所有网格点找到到测试点的真实 3d 距离?