如何将python映射函数应用于多维数组

如何将python映射函数应用于多维数组,python,map,Python,Map,我有一个经纬度数组,格式如下: coord = [[lat1,long2],[lat2,long2],...,[latn,longn]] 我想将它们从度转换为弧度,创建两个数组,一个包含经度,另一个包含纬度。为此,我想使用map函数来避免for循环,我想这样做: lat_ = map(radians,coords[_][0]) 其中u是更改的索引。通常在Python中,我们通过列表理解来执行此操作: 要将其转换为map-speak,您需要一个封装弧度(coord[0])操作的函数 或者,您可

我有一个经纬度数组,格式如下:

coord = [[lat1,long2],[lat2,long2],...,[latn,longn]]
我想将它们从度转换为弧度,创建两个数组,一个包含经度,另一个包含纬度。为此,我想使用map函数来避免for循环,我想这样做:

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

其中u是更改的索引。

通常在Python中,我们通过列表理解来执行此操作:

要将其转换为
map
-speak,您需要一个封装
弧度(coord[0])
操作的函数

或者,您可以先准备以度为单位的纬度列表和以度为单位的经度列表。内置函数
zip
可以做到这一点(
zip(*coords)
,因为压缩在一起的每个列表都是函数的参数)

请记住,在3.x中,
map
zip
都将返回生成器,您需要显式地转换它们以返回实际列表(例如
list(map(…)


但认真地说,使用列表理解。它们是标准的习惯用法,而且更加清晰——它们使用方括号表示正在创建一个列表,中间是根据输入数据对列表内容的实际描述。没有比这更简单或更清楚的了。

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

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

请注意,在Python3.x中,这将提供一个生成器(特别是一个“映射对象”)——但这取决于您想使用它做什么,这可能是一个优势。

我在回答中故意尝试避免使用
map
提供直接的解决方案,但我认为提及
lambda
,是的。:)@KarlKnechtel总是很难在付出太多和太少之间取得平衡。我想看看最新的python是否有比下面列出的答案更好的方法来做到这一点?
lat_ = map(lambda i:radians(i[0]), l)
lon_ = map(lambda i:radians(i[1]), l)