Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在多维数组中写入值数组的坐标_Python_Arrays_Python 3.x - Fatal编程技术网

Python 在多维数组中写入值数组的坐标

Python 在多维数组中写入值数组的坐标,python,arrays,python-3.x,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

我有以下清单:

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]))

非常感谢您的帮助

我想您需要这样的帮助:

[[[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]]]

您可以遍历列表中每个元素内的每个索引,并使用
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”的方式,您可以使用单行命令(这可能更难理解,但做的事情完全相同):


你不需要for循环,只要
zip(Lon,Lat)
就行了。试试
zip(Lon,Lat)
。要将其转换为列表,请使用:
list(zip(Lon,Lat))
。哦,需要注意的是,
zip
会将“内部”列表转换为元组。EG:<代码> [(LoNo0.0,LATE0 0),(…)] /<代码>。此外,考虑将您的“列表”从“代码>列表< /代码>重命名为其他代码,如<代码> LST < /代码>。通过命名变量
list
可以覆盖
list
构造函数。因此,例如,@pask之前的建议即使应该也不起作用。但是zip函数是不可下标的,我如何调用列表中每个点的压缩坐标?@mrcbrbr很高兴听到这一点。请考虑它是否有用。
result = [[[Lon[index], Lat[index]] for index in entry] for entry in list]