当我使用 map 和 lambda 函数时,我被困在如何遍历配对列表。我想根据中心位置和所选位置(x,y)到中心的距离以及特定距离出现的次数创建一系列直方图,但我不断收到超出范围错误的索引,但我没有不明白为什么。我不确定如何遍历需要指定其中哪两个值的位置。除了 n 部分之外,整个事情都有效。
抱歉没有更清楚,locations=numpy.array((x,y)) 是布尔数组中的位置,它产生我想要测试的特定位置,而不是整个数组。产生的值 (x,y) 是一个两行数组,其中我想要的值按列配对。在此之前的代码是:
def detect_peaks(data):
average=numpy.average(data)*2
local_max = data > average
return local_max
(x,y) = numpy.where(detect_peaks(data))
for test_x in range(0, 8):
for test_y in range(0,8):
distances=[]
locations=numpy.array((x,y))
central=numpy.array((test_x,test_y))
[map(lambda x1: distances.append(numpy.linalg.norm(locations[(x1,0), (x1,1)]-central)), n) for n in locations]
histogram=numpy.histogram(distances, bins=10)
我将重写 map/lambda 函数并回来。谢谢!