我有一个6000,000个3D坐标的数据集,我存储在名为allcoord的列表中。我使用该函数找到给定点的所有近邻:
def nearNeighbors(allcoord, idself, radius):
xc, yc, zc = allcoord[idself][0:3]
neighbors = []
for i in range(len(allcoord)):
if i != idself:
x, y, z = allcoord[i][0:3]
if (x-xc)*(x-xc) + (y-yc)*(y-yc) + (z-zc)*(z-zc) <= radius*radius:
neighbors.append(i)
return neighbors
正如你所看到的,我在一个球体中寻找给定点的所有邻居。现在我想计算连接的概率,知道邻居越近,连接的概率越高。该模型类似于高斯但具有3D坐标。
然后例如:
import math
import numpy as np
a = np.asarray([1,1,3])
b = np.asarray([1.5,0.8,2.4])
sygma = 1
gaussianweight = math.exp(-(a-b)*(a-b)/2*sygma)
但我有以下错误:
Traceback (most recent call last):
File "<ipython-input-39-96dd84161692>", line 9, in <module>
gaussianweight = math.exp(-(a-b)*(a-b)/2*sygma)
TypeError: only length-1 arrays can be converted to Python scalars
我有两个问题:
1)如何确定西格玛的良好价值?
2)如何在3D坐标上执行该操作?
我需要此参数来确定高斯权重的最小值,以考虑2点之间存在连接。
感谢您的帮助!