2016-08-09 15 views
7

Giả sử tôi làm f(x,y) = 2x + y sau đó map(f, [2,4,6],[1,1,1]) tôi sẽ nhận được:Tôi có thể sử dụng `bản đồ` với đầu vào cố định không?

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

Nếu tôi làm map(f, [2,4,6],1), ví dụ, tôi muốn để giả định rằng các đầu vào thứ hai luôn là như nhau, tôi sẽ nhận được:

1-element Array{Any,1}: 
5 

Điều này không hiệu quả. Có cách nào để làm điều này mà không cần mã hóa một Vector [1,1,1]?

+0

Xem thêm câu hỏi liên quan này bao gồm các đối số từ khóa cố định: http://stackoverflow.com/questions/38906788/julia-passing-arguments-to-function-through-the-map-function –

Trả lời

8

Broadcast "đóng vai trò như" nó thay đổi mảng là một kích thước mà làm việc, và bản đồ:

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

kết quả đầu ra:

Int64[3] 
5 
9 
13 
+0

Có tương đương song song với phát sóng không , như pmap() là để map()? –

+0

Có thể [nếu bạn để cho các nhà phát triển biết rằng bạn muốn một ở đây] (https://github.com/JuliaLang/julia/issues/17887). Có một số chi tiết thực hiện cần làm việc ('map' không cần chia sẻ dữ liệu giữa các lần chạy độc lập, trong khi' broadcast' cần chia sẻ vectơ nhỏ theo một nghĩa nào đó), nhưng nếu đề xuất của tôi có đủ sự ủng hộ , nên có một 'pbroadcast()', và cũng có những thứ như 'tbroadcast()' cho luồng. Xem vấn đề. –

+0

Tuyệt vời. Điều này sẽ rất tuyệt vời. Tôi sẽ cắm phích cắm vào. –

2

Bạn có thể sử dụng map(x->f(x,1), [2,4,6]) để thực hiện điều này.

Các vấn đề liên quan