2016-08-09 32 views
7

Załóżmy zrobić f(x,y) = 2x + y następnie map(f, [2,4,6],[1,1,1]) dostanę:Czy mogę użyć `map` ze stałym wejściem?

3-element Array{Int64,1}: 
    5 
    9 
13 

Jeśli robię map(f, [2,4,6],1), to znaczy chcę, by przypuszczać, że drugie wejście jest zawsze taki sam, dostanę:

1-element Array{Any,1}: 
5 

To nie działa. Czy istnieje sposób, aby to zrobić bez kodowania Vector [1,1,1]?

+0

Zobacz także pokrewne pytanie dotyczące stałych argumentów słów kluczowych: http://stackoverflow.com/questions/38906788/julia-passing-arguments-to-function-through-map-function –

Odpowiedz

8

Broadcast "działa jak" zmienia tablice być wielkość, która działa i mapy:

broadcast(f, [2,4,6],1)

wyjścia:

Int64[3] 
5 
9 
13 
+0

Czy istnieje równoległy odpowiednik transmisji , jako że pmap() jest map()? –

+0

Może być [jeśli powiadomiłeś programistów, że chcesz go tutaj] (https://github.com/JuliaLang/julia/issues/17887). Istnieją pewne szczegóły implementacji, które trzeba by opracować ('map' nie musi udostępniać danych pomiędzy niezależnymi przebiegami, podczas gdy' broadcast' musi w pewnym sensie współdzielić mały wektor), ale jeśli moja propozycja ma wystarczającą podstawę , powinno być 'pbroadcast()', a także rzeczy takie jak 'tbroadcast()' do wątkowania. Zobacz problem. –

+0

Awesome. Byłoby świetnie. Włożę wtyczkę. –

2

Można użyć map(x->f(x,1), [2,4,6]) do osiągnięcia tego celu.