2013-05-12 32 views
14

Tôi đã đọc x-dữ liệu (từ tập tin văn bản) vào list1, và y-dữ liệu tương tự vào các List2:Làm thế nào để kết hợp hai danh sách với các cặp tọa độ âm mưu?

list1 = { 0.0, 0.172, 0.266, ..} 
list2 = {-5.605, -5.970, -6.505, ..} 

Làm thế nào để kết hợp hai danh sách để vẽ điểm {0,0, -5,605}, {0,172, -5,970}, {0,266, -6,505}, ....

+1

có lẽ bạn muốn thử: 'vơ vét [list1, List2] ~ Partition ~ 2' –

+1

người dùng xứng đáng được giải thích tại sao điều này bị đóng. Nó chắc chắn không phải là "tắt chủ đề". – agentp

+1

Để đóng cửa: Ý kiến ​​của bạn về một ngôn ngữ (Mathematica (TM)) bạn không biết ở tất cả không được hoan nghênh. Bạn nên sử dụng sức mạnh gần gũi của mình theo cách khôn ngoan hơn. –

Trả lời

16

Nếu bạn không thích đề xuất Pinguin Dirk thử

Transpose[{list1,list2}] 
2

Dưới đây là một câu trả lời mà tạo ra một chức năng tái sử dụng để ghép lên hai vectơ. Hàm này sử dụng một hàm thuần túy ánh xạ theo chiều dài của vectơ ngắn nhất để tạo các cặp.

list1 = {1, 2, 3, 4, 5}; 
    list2 = {13, 18, 20, 18, 13}; 
    pairUp[xValues_ , yValues_] := ({xValues[[#]], yValues[[#]]}) & /@ 
     Range[Min[Length[xValues], Length[yValues]]]; 

    pairUp[list1, list2] 
    (* 
     {{1, 13}, {2, 18}, {3, 20}, {4, 18}, {5, 13}} 
    *) 

Hope this helps,

Edmund

PS: Mới đến Mathematica và hy vọng sẽ cải thiện sự hiểu biết của tôi bằng cách cố gắng trả lời một số câu hỏi trên đây bất cứ lúc nào.

7

chưa khác ..

MapThread[ {#1, #2} & , {list1, list2}] 

hoặc nếu bạn muốn xử lý một cách duyên dáng danh sách dài bất bình đẳng:

MapThread[ {#1, #2} &, Take[#, All, Min @@ Length /@ #] &@{list1, list2} ] 
+1

Bạn thậm chí có thể đơn giản hóa điều này bằng cách sử dụng 'MapThread [List, {list1, list2}]' – lkuty

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