我的代码中有两个嵌套的for循环,但是其中一个起作用而另一个则不起作用,它们也是相同的,它发挥了我的作用
此代码有效
def nearest(furthestpoints,lastpoints,lastIDs,currentpoints,img,threshold = 30):
currentIDs = np.empty(0,dtype = float)
normList = np.empty(0,dtype = float)
for i in range(0,len(currentpoints)):
for a in range(0,len(lastpoints)):
normList = np.append(normList,np.linalg.norm(currentpoints[i,:] - lastpoints[a,:]))```
但是此代码会产生错误
File "/home/oliver/tracker.py", line 22, in getLostPoints
normList = np.append(normList,np.linalg.norm(current[i,:] - last[a,:]))
TypeError: range indices must be integers or slices, not tuple
def getLostPoints(last,lastIDs,current,threshold = 50):
normList = np.empty(0,dtype = float)
goodIDs = np.empty(0,dtype = int)
lostPoints = np.empty((2,0),dtype = float)
for i in range(0,len(last)):
for a in range(0,len(current)):
normList = np.append(normList,np.linalg.norm(current[i,:] - last[a,:]))
if min(normList) < threshold:
indexMin = np.argmin(normList)
goodIDs = np.append(goodIDs,lastIDs[indexMin])
normList = np.empty(0,dtype = float)
这些只是循环,此代码还有更多内容
输入数组的形状为(n,2)
其中n
是点数
答案 0 :(得分:1)
我没有足够的声誉来发表评论,因此我必须将其发布为答案。
首先,您有:
for i in range(0,len(current)):
for a in range(0,len(current)):
您的意思是:
for i in range(0,len(current)):
for a in range(0,len(last)):
这将遵循与您的方法相同的模式。
您是否尝试过用第二种方法打印i
和a
来进行健全性检查以及打印输入的特征(形状等)?这不是最有说服力的调试方式,但是打印值只是为了确保它们符合您的期望,这会很有见地。
答案 1 :(得分:0)
发现了一个问题,当我在主循环中调用代码时,这是一个简单的错误 现在工作正常,谢谢您的回答