代码如下:
Outputs = []
for X2, Y2 in X:
Color_Gradient = 0
Lowest = 0
for X1, Y1, grad in zip(Velocity_Momentum[:, 0], Velocity_Momentum[:, 1], Color):
XD = X2 - X1
YD = Y2 - Y1
Distance = math.sqrt((XD * XD) + (YD * YD))
if Lowest == 0 or Lowest > Distance:
Lowest = Distance
Color_Gradient = grad
Outputs.append(Color_Gradient)
print("X2 = ", X2, " Y2 = ", Y2, " Color = ", Color_Gradient)
这里是X.shape = (572, 2) Velocity_Momentum = (1000000, 2) Color = (1000000,)
.
请让我知道如何使它更快。我已经尝试了上面的代码,它是非常非常慢。这是不好的,因为我试图得到更快的结果。
请告诉我。
看起来您正在使用numpy数组。使用numpy,与循环相比,同时对整个数组使用矢量化操作要快得多。它通常也会给出更简洁的代码。
在我的理解中,你想要提取到特定点的最小(欧几里得)距离对应的颜色。
Outputs = []
for X2, Y2 in X:
XD = X2 - Velocity_Momentum[:, 0]
YD = Y2 - Velocity_Momentum[:, 1]
Distance = (XD * XD) + (YD * YD)
Color_Gradient = Color[Distance.argmin()]
Outputs.append(Color_Gradient)
print("X2 = ", X2, " Y2 = ", Y2, " Color = ", Color_Gradient)