2016-12-15 17 views
5

ベクトルの各要素に関数(len)を適用したいとします。 Rでは簡単にsapply(cities,char)でこれを行うことができます。ループを書くことなく、Pythonでこれのような代替がありますか?Python対R:ベクトルの各要素に関数を適用する

+0

https://docs.python.org/3/library/functions.html#map – jakevdp

+1

リストの理解はどうですか? ''ベクトル内のelのためのlen(el) '。それは 'map'よりもPythonicです。 –

+2

しかし、 'sapply'はループです! – Parfait

答えて

4

構文はmap(function, list)です。

例:

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

出力:

[ 3, 3 ] 
0

あなたが反復可能に適用する機能を受け取る関数マップを使用することができます。マップをマッピングするためのドキュメント:たとえばhere

、あなたの缶はこの方法でリストに各要素に適用する(ラムダを使用して)anonymus機能を渡す:

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

R sapply()を置き換えることができリストの理解度は十分ですが、リストの理解度は十分ですが、の書類のループと厳重にはなりません。あなたは、人々がRに使う機能のいくつかにPythonの選択肢を提供しPandasを見て、取るべきmap()に加えて

import pandas as pd 

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

平方値を含む新しいリストで上記のコードの結果入力プログラムの:ここで

[1, 4, 9, 16, 25] 

、私はシリーズのコンストラクタpd.Series(vector)へのベクトルを渡され、anonymus機能apply(lambda x: x**2)を適用します。出力は、希望の場合はリストに戻すことができるパンダシリーズですtolist()。 Pandasシリーズは多くの機能を備えており、多くのデータ操作や分析作業に最適です。

関連する問題