マッパー、レデューサー、フィルター
質問
map / reduce alghoritmとその使用について知っています。マッパーとレデューサーと呼ばれる関数を使用していますが、フィルターという言葉を使用している人もいます。
フィルターはマッパーと同じですか、それとも大きな違いがありますか?
解決
フィルタは、渡された関数が常に「特性関数」であるマップのようなものです。これは、「yes」または「yes」を返す関数です。または「いいえ」 「これはここに属しますか?」という質問に対する回答
言い換えれば、{x | x∈ Xおよび P(x)}。フィルターはベースセットを取得し、 P(x)がtrueであるかどうかをテストして、trueのメンバーのみを返します。
そのため{ x | x は自然数であり、odd( x )}は{1,3,5,7 ...}です。
A map は任意の関数を適用するため、{y | x∈ X および y = f(x)}。
だから{ y | x は自然数で、 y = x² }は{1,4,9,16、...}です。
他のヒント
フィルターは「リスト」を取ります;および関数。関数をリストのすべてのメンバーに適用し、関数のアプリケーションがtrueを返したメンバーのみを含む新しいリストを返します。例えば:
l = [1,2,3,4]
l = filter(lambda x: x < 3, l)
print l # [1,2]
Mapは同じことを行いますが、関数適用の結果を含むリストを返します:
l = [1,2,3,4]
l = map(lambda x: x < 3, l)
print l # [True,True,False,False]
フィルタは、アイテムを保持するか削除するかを決定します。マッパーは値を別の値に変換するだけです。結果として、マップ操作の出力セットのサイズは常に入力セットのサイズと等しくなります。フィルター操作の出力は、入力セットよりも小さくなります。
通常、マップ関数は入力セットと関数を受け取り、各入力要素の関数出力を含むセットを返します。フィルターは入力セットとブール関数を受け取り、関数がtrueを返す入力値を含むセットを返します。