我如何将python map函数应用于多维数组

时间:2014-07-17 10:07:54

标签: python map

我有一系列经度和纬度的格式:

coord = [[lat1,long2],[lat2,long2],...,[latn,longn]]

我想将它们从度数转换为弧度,创建两个数组,一个包含经度,一个包含纬度。要做到这一点,我想使用map函数来避免for循环,我想做这样的事情:

lat_ = map(radians,coords[_][0])

其中_是更改的索引。

2 个答案:

答案 0 :(得分:2)

虽然我通常会使用列表理解作为Karl的答案,但您明确地询问了如何使用map进行操作。简单的方法是使用lambda:

lat_ = map(lambda i:radians(i[0]), l)
lon_ = map(lambda i:radians(i[1]), l)

请注意,使用Python 3.x,这将给出一个生成器(特别是一个" map对象") - 但是根据你想要做的事情,这可能是一个优势。

答案 1 :(得分:1)

通常在Python中我们使用 list comprehension

来完成此操作
lats = [radians(coord[0]) for coord in coords]
longs = [radians(coord[1]) for coord in coords]

要将其转换为map - 请说,您需要一个封装radians(coord[0])操作的函数。

或者,您可以先准备纬度和度数的列表。内置函数zip可以执行此操作(zip(*coords),因为每个列表被压缩在一起是函数的参数。)

请注意,在3.x中,mapzip都会返回生成器,您需要显式转换它们才能获得实际列表(例如{{1} })。

但严重的是,使用列表推导。它们是标准的习惯用语,它们更加清晰 - 它们使用方括号表示正在创建列表,然后在它们之间是根据输入数据对列表内容的实际描述。它没有比那更简单或更清楚。