我在 python 脚本中调用一个函数,我想返回一组索引。基本上我想(array([index1]),array([index2]))
从 numpy.where() 中删除返回,所以我只有 ([index1],[index2])
.
我尝试转换为字符串并使用arr.strip('array')
,但这没有用。
我想我应该澄清一些事情。我希望函数返回一个值,然后返回两个索引[val, index1, index2]
实际上,返回看起来更像这样:[val, (array([index1]), array([index2]))]
基本上,我搜索两个数组 Lat 和 Lon,看看它们在哪里具有相同的索引,每个索引都满足自己的要求。然后我计算这些点和给定点之间的距离并将其附加到列表中。
for i in range(len(smalllat)):
temp = [smalllat[i], smalllon[i]]
loc = N.where((lat==smalllat[i]) & (lon==smalllon[i]))
smallset.append([dist_calc.distance(temp, [lat1, lon1]), loc])
然后我按第一个值(距离)对列表进行排序并返回前四个数组。
dset = sorted(smallset)
return dset[:4]
这给了我一些形式:
[[3.3883810544766138, (array([72]), array([232]))],
[25.248157869075957, (array([72]), array([231]))],
[34.31977394077627, (array([71]), array([232]))],
[42.651294795468786, (array([71]), array([233]))]]
我想将它们存储在(x, 4, 3)
numpy 数组中,其中 x 是我运行该函数的次数。
所需的输出将类似于:
[[[3.3883810544766138, 72, 232],
[25.248157869075957, 72, 231],
[34.31977394077627, 71, 232],
[42.651294795468786, 71, 233]],
...,
[[3.3883810544766138, 72, 232],
[25.248157869075957, 72, 231],
[34.31977394077627, 71, 232],
[42.651294795468786, 71, 233]]]
随意问的问题。
有什么建议么?
更新
我通过将函数更改为:
for i in range(len(smalllat)):
temp = [smalllat[i], smalllon[i]]
loc = N.where((lat==smalllat[i]) & (lon==smalllon[i]))
loc = [map(int, x) for x in loc]
loc1 = loc[0]
loc2 = loc[1]
smallset.append([dist_calc.distance(temp, [lat1, lon1]), loc1[0], loc2[0]])
不过我敢肯定有更好的方法。