2013-07-12 15 views
5

Dati due insiemi di Mathematica di dati comeElement-saggio valore massimo per due liste

data1 = {0, 1, 3, 4, 8, 9, 15, 6, 5, 2, 0}; 
data2 = {0, 1, 2, 5, 8, 7, 16, 5, 5, 2, 1}; 

Come posso creare un set dandomi il valore massimo delle due liste, ovvero come ottenere

data3 = {0, 1, 3, 5, 8, 9, 16, 6, 5, 2, 1}; 

?

+0

si cerca cioè codice C#? – cinek

+1

Si prega di dare un'occhiata a questo sito, in particolare per le domande Mathematica http://mathematica.stackexchange.com/questions –

risposta

4
data1 = {0, 1, 3, 4, 8, 9, 15, 6, 5, 2, 0}; 
data2 = {0, 1, 2, 5, 8, 7, 16, 5, 5, 2, 1}; 
Max /@ Transpose[{data1, data2}] 
(* {0, 1, 3, 5, 8, 9, 16, 6, 5, 2, 1} *) 
+0

BTW '/ @' è una scorciatoia per [Mappa] (http://reference.wolfram.com/mathematica/ ref/Map.html) –

3

Un'altra possibile soluzione è quella di utilizzare la funzione MapThread:

data3 = MapThread[Max, {data1, data2}] 

soluzione Belisario, tuttavia, è molto più veloce.

1

più semplice, anche se non il più veloce:

Inner[Max,data1,data2,List] 
+1

Hmm, 3 chiamate di funzioni * vs * 3 nella risposta di belisario * vs * 2 in sakra. Penso che tutti e 3 siano nella stessa classe di equivalenza per semplicità. –