Python与R:将函数应用于向量中的每个元素

时间:2016-12-15 18:14:06

标签: python apply

我想在向量中的每个元素上应用函数(len)。在R中,我可以使用sapply(cities,char)轻松完成此操作。在没有编写循环的情况下,Python中是否有这样的替代方法?

4 个答案:

答案 0 :(得分:11)

语法为map(function, list)

示例:

map(len, [ [ 1,2,3], [4,5,6] ])

输出:

[ 3, 3 ]

答案 1 :(得分:5)

R sapply()可以用列表理解替换,但是列表理解并不严格地避免循环的

除了map()之外,您还应该看一下Pandas,它提供了人们在R中使用的几种功能的Python替代方案。

import pandas as pd

vector = [1,2,3,4,5]
square_vector = pd.Series(vector).apply(lambda x: x**2)  
print square_vector.tolist()

上面的代码会生成一个新列表,其中包含imput的平方值:

[1, 4, 9, 16, 25]

在这里,我将向量传递给系列构造函数pd.Series(vector)并应用匿名函数apply(lambda x: x**2)。输出是一个pandas系列,如果需要,可以将其转换回列表tolist()。 Pandas系列具有许多功能,是许多数据处理和分析任务的理想选择。

答案 2 :(得分:2)

您可以使用接收函数的函数映射来应用于iterable。地图地图的文档:here

例如,您可以通过匿名函数(使用lambda)通过这种方式将每个元素应用于列表:

>>> map(lambda x: x[1]*2 + 3, [[1,2,3], [1,4]])
[7, 11]

答案 3 :(得分:0)

考虑一下:

cities = ['new york', 'tokyo', 'paris']
sapply_equivalent = [len(city) for city in cities]

然后sapply_equivalent返回[8, 5, 5]