在多维数组

时间:2018-06-12 14:09:51

标签: python arrays python-3.x

我有这个清单:

list = [[0, 5], [0, 3, 6], [1, 2, 4], [1, 7], [0, 1]]

每个元素指的是坐标列为两个数组的点:

Lon = [2.0,3.0,5.0,2.0,6.0,1.0,3.0,4.0]
Lat = [4.0,6.0,5.0,3.0,4.0,2.0,1.0,7.0]

我正在尝试创建一个格式如下的数组:

[[Lon_0,Lat_0],[Lon_5,Lat_5]]
[[Lon_0,Lat_0],[Lon_3,Lat_3],[Lon_6,Lat_6]]
...

我尝试了zip功能,但缺少了一些内容,我不知道如何继续前进:

for m in list:
    for n in m:
        Coord = zip((Lon[n], Lat[n]))

感谢任何帮助

2 个答案:

答案 0 :(得分:1)

我猜你需要这样的东西:

[[[Lon[i], Lat[i]] for i in sub] for sub in mylist]
#[[[2.0, 4.0], [1.0, 2.0]],
# [[2.0, 4.0], [2.0, 3.0], [3.0, 1.0]],
# [[3.0, 6.0], [5.0, 5.0], [6.0, 4.0]],
# [[3.0, 6.0], [4.0, 7.0]],
# [[2.0, 4.0], [3.0, 6.0]]]

答案 1 :(得分:1)

您可以遍历列表中每个元素内的每个索引,并使用Lon, Lat值重建条目。

以下是代码:

# Sample data
list = [[0, 5], [0, 3, 6], [1, 2, 4], [1, 7], [0, 1]]
Lon = [2.0,3.0,5.0,2.0,6.0,1.0,3.0,4.0]
Lat = [4.0,6.0,5.0,3.0,4.0,2.0,1.0,7.0]

# Construct result list
result = []                                                                                                                          
for entry in list:
    elem = []
    for index in entry:
        elem.append([Lon[index], Lat[index]])
    result.append(elem)

# Sample output
print(result)
[[[2.0, 4.0], [1.0, 2.0]], 
 [[2.0, 4.0], [2.0, 3.0], [3.0, 1.0]], 
 [[3.0, 6.0], [5.0, 5.0], [6.0, 4.0]], 
 [[3.0, 6.0], [4.0, 7.0]], 
 [[2.0, 4.0], [3.0, 6.0]]]

以更“pythonic”的方式,您可以使用单行命令(可能更难理解,但完全相同):

result = [[[Lon[index], Lat[index]] for index in entry] for entry in list]