Apply MapThread to all but one variableHow do you efficiently return all of a List but one element?All values for a function with two arguments without OuterEfficiently finding the maximum value of a column in a matrixnested use of Apply/Map/MapThread in pure functionsMapThread AlternativesFinding neighbors from listMapThread problemapply binary operation to all adjacent pairsFlip sign of one variable in listFind numbers from Mean, Variance and Correlation coefficient

How do I check if a string is entirely made of the same substring?

Don’t seats that recline flat defeat the purpose of having seatbelts?

How does Captain America channel this power?

How to denote matrix elements succinctly?

What is the smallest unit of eos?

"You've called the wrong number" or "You called the wrong number"

How to fry ground beef so it is well-browned

On The Origin of Dissonant Chords

Aligning equation numbers vertically

Is it idiomatic to construct against `this`

a sore throat vs a strep throat vs strep throat

A ​Note ​on ​N!

Do I have an "anti-research" personality?

What happened to Captain America in Endgame?

Are there physical dangers to preparing a prepared piano?

Is the claim "Employers won't employ people with no 'social media presence'" realistic?

Mistake in years of experience in resume?

Betweenness centrality formula

Alignment of various blocks in tikz

What's the polite way to say "I need to urinate"?

How do I deal with a coworker that keeps asking to make small superficial changes to a report, and it is seriously triggering my anxiety?

How could Tony Stark make this in Endgame?

Dynamic SOQL query relationship with field visibility for Users

Is there a way to generate a list of distinct numbers such that no two subsets ever have an equal sum?



Apply MapThread to all but one variable


How do you efficiently return all of a List but one element?All values for a function with two arguments without OuterEfficiently finding the maximum value of a column in a matrixnested use of Apply/Map/MapThread in pure functionsMapThread AlternativesFinding neighbors from listMapThread problemapply binary operation to all adjacent pairsFlip sign of one variable in listFind numbers from Mean, Variance and Correlation coefficient













2












$begingroup$


I would like to know what is the most efficient to implement the following computation. Given three lists



 a = a_1,a_2, a_3, …, a_n
b = b_1,b_2, b_3, …, b_n
c = c_1,c_2, c_3, …, c_n


and a function $f(x_1,x_2,x_3)$, obtain



 f(a_1,b_1,c_1) f(a_1,b_1,c_2) ..... f(a_1,b_1,c_n) 
f(a_2,b_2,c_1) f(a_2,b_2,c_2) ..... f(a_2,b_2,c_n)
..... ..... ..... .....
f(a_n,b_n,c_1) f(a_n,b_n,c_2) ..... f(a_n,b_n,c_n)


I cannot find a solution not using For.










share|improve this question











$endgroup$
















    2












    $begingroup$


    I would like to know what is the most efficient to implement the following computation. Given three lists



     a = a_1,a_2, a_3, …, a_n
    b = b_1,b_2, b_3, …, b_n
    c = c_1,c_2, c_3, …, c_n


    and a function $f(x_1,x_2,x_3)$, obtain



     f(a_1,b_1,c_1) f(a_1,b_1,c_2) ..... f(a_1,b_1,c_n) 
    f(a_2,b_2,c_1) f(a_2,b_2,c_2) ..... f(a_2,b_2,c_n)
    ..... ..... ..... .....
    f(a_n,b_n,c_1) f(a_n,b_n,c_2) ..... f(a_n,b_n,c_n)


    I cannot find a solution not using For.










    share|improve this question











    $endgroup$














      2












      2








      2





      $begingroup$


      I would like to know what is the most efficient to implement the following computation. Given three lists



       a = a_1,a_2, a_3, …, a_n
      b = b_1,b_2, b_3, …, b_n
      c = c_1,c_2, c_3, …, c_n


      and a function $f(x_1,x_2,x_3)$, obtain



       f(a_1,b_1,c_1) f(a_1,b_1,c_2) ..... f(a_1,b_1,c_n) 
      f(a_2,b_2,c_1) f(a_2,b_2,c_2) ..... f(a_2,b_2,c_n)
      ..... ..... ..... .....
      f(a_n,b_n,c_1) f(a_n,b_n,c_2) ..... f(a_n,b_n,c_n)


      I cannot find a solution not using For.










      share|improve this question











      $endgroup$




      I would like to know what is the most efficient to implement the following computation. Given three lists



       a = a_1,a_2, a_3, …, a_n
      b = b_1,b_2, b_3, …, b_n
      c = c_1,c_2, c_3, …, c_n


      and a function $f(x_1,x_2,x_3)$, obtain



       f(a_1,b_1,c_1) f(a_1,b_1,c_2) ..... f(a_1,b_1,c_n) 
      f(a_2,b_2,c_1) f(a_2,b_2,c_2) ..... f(a_2,b_2,c_n)
      ..... ..... ..... .....
      f(a_n,b_n,c_1) f(a_n,b_n,c_2) ..... f(a_n,b_n,c_n)


      I cannot find a solution not using For.







      list-manipulation






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 2 hours ago









      corey979

      20.9k64382




      20.9k64382










      asked 2 hours ago









      SmerdjakovSmerdjakov

      1305




      1305




















          3 Answers
          3






          active

          oldest

          votes


















          4












          $begingroup$

          Here's one way to do it with Outer:



          n = 3;
          l1 = Array[a, n];
          l2 = Array[b, n];
          l3 = Array[c, n];

          Outer[
          f[#1[[1]], #1[[2]], #2] &,
          Transpose @ l1, l2,
          l3,
          1
          ]



          Out[25]= f[a[1], b[1], c[1]], f[a[1], b[1], c[2]],
          f[a[1], b[1], c[3]], f[a[2], b[2], c[1]], f[a[2], b[2], c[2]],
          f[a[2], b[2], c[3]], f[a[3], b[3], c[1]], f[a[3], b[3], c[2]],
          f[a[3], b[3], c[3]]







          share|improve this answer









          $endgroup$








          • 1




            $begingroup$
            Or Outer[f[Sequence @@ #1, #2] &, Transpose@l1, l2, l3, 1] so you don't need to unravel #1 manually.
            $endgroup$
            – Roman
            2 hours ago


















          2












          $begingroup$

          a = a1, a2, a3, a4, a5;
          b = b1, b2, b3, b4, b5;
          c = c1, c2, c3, c4, c5;

          Table[f[a[[j]], b[[j]], c[[k]]], j, 1, 5, k, 1, 5]


          enter image description here






          share|improve this answer









          $endgroup$




















            2












            $begingroup$

            Another possibility is to use the 3-arg version of Thread. With Sjoerd's example:



            n = 3;
            l1 = Array[a,n];
            l2 = Array[b,n];
            l3 = Array[c,n];


            Using Thread:



            Thread /@ Thread[f[l1, l2, l3], List, 2]



            f[a[1], b[1], c[1]], f[a[1], b[1], c[2]],
            f[a[1], b[1], c[3]], f[a[2], b[2], c[1]], f[a[2], b[2], c[2]],
            f[a[2], b[2], c[3]], f[a[3], b[3], c[1]], f[a[3], b[3], c[2]],
            f[a[3], b[3], c[3]]







            share|improve this answer









            $endgroup$













              Your Answer








              StackExchange.ready(function()
              var channelOptions =
              tags: "".split(" "),
              id: "387"
              ;
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function()
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled)
              StackExchange.using("snippets", function()
              createEditor();
              );

              else
              createEditor();

              );

              function createEditor()
              StackExchange.prepareEditor(
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: false,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: null,
              bindNavPrevention: true,
              postfix: "",
              imageUploader:
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              ,
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              );



              );













              draft saved

              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f197144%2fapply-mapthread-to-all-but-one-variable%23new-answer', 'question_page');

              );

              Post as a guest















              Required, but never shown

























              3 Answers
              3






              active

              oldest

              votes








              3 Answers
              3






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              4












              $begingroup$

              Here's one way to do it with Outer:



              n = 3;
              l1 = Array[a, n];
              l2 = Array[b, n];
              l3 = Array[c, n];

              Outer[
              f[#1[[1]], #1[[2]], #2] &,
              Transpose @ l1, l2,
              l3,
              1
              ]



              Out[25]= f[a[1], b[1], c[1]], f[a[1], b[1], c[2]],
              f[a[1], b[1], c[3]], f[a[2], b[2], c[1]], f[a[2], b[2], c[2]],
              f[a[2], b[2], c[3]], f[a[3], b[3], c[1]], f[a[3], b[3], c[2]],
              f[a[3], b[3], c[3]]







              share|improve this answer









              $endgroup$








              • 1




                $begingroup$
                Or Outer[f[Sequence @@ #1, #2] &, Transpose@l1, l2, l3, 1] so you don't need to unravel #1 manually.
                $endgroup$
                – Roman
                2 hours ago















              4












              $begingroup$

              Here's one way to do it with Outer:



              n = 3;
              l1 = Array[a, n];
              l2 = Array[b, n];
              l3 = Array[c, n];

              Outer[
              f[#1[[1]], #1[[2]], #2] &,
              Transpose @ l1, l2,
              l3,
              1
              ]



              Out[25]= f[a[1], b[1], c[1]], f[a[1], b[1], c[2]],
              f[a[1], b[1], c[3]], f[a[2], b[2], c[1]], f[a[2], b[2], c[2]],
              f[a[2], b[2], c[3]], f[a[3], b[3], c[1]], f[a[3], b[3], c[2]],
              f[a[3], b[3], c[3]]







              share|improve this answer









              $endgroup$








              • 1




                $begingroup$
                Or Outer[f[Sequence @@ #1, #2] &, Transpose@l1, l2, l3, 1] so you don't need to unravel #1 manually.
                $endgroup$
                – Roman
                2 hours ago













              4












              4








              4





              $begingroup$

              Here's one way to do it with Outer:



              n = 3;
              l1 = Array[a, n];
              l2 = Array[b, n];
              l3 = Array[c, n];

              Outer[
              f[#1[[1]], #1[[2]], #2] &,
              Transpose @ l1, l2,
              l3,
              1
              ]



              Out[25]= f[a[1], b[1], c[1]], f[a[1], b[1], c[2]],
              f[a[1], b[1], c[3]], f[a[2], b[2], c[1]], f[a[2], b[2], c[2]],
              f[a[2], b[2], c[3]], f[a[3], b[3], c[1]], f[a[3], b[3], c[2]],
              f[a[3], b[3], c[3]]







              share|improve this answer









              $endgroup$



              Here's one way to do it with Outer:



              n = 3;
              l1 = Array[a, n];
              l2 = Array[b, n];
              l3 = Array[c, n];

              Outer[
              f[#1[[1]], #1[[2]], #2] &,
              Transpose @ l1, l2,
              l3,
              1
              ]



              Out[25]= f[a[1], b[1], c[1]], f[a[1], b[1], c[2]],
              f[a[1], b[1], c[3]], f[a[2], b[2], c[1]], f[a[2], b[2], c[2]],
              f[a[2], b[2], c[3]], f[a[3], b[3], c[1]], f[a[3], b[3], c[2]],
              f[a[3], b[3], c[3]]








              share|improve this answer












              share|improve this answer



              share|improve this answer










              answered 2 hours ago









              Sjoerd SmitSjoerd Smit

              4,610817




              4,610817







              • 1




                $begingroup$
                Or Outer[f[Sequence @@ #1, #2] &, Transpose@l1, l2, l3, 1] so you don't need to unravel #1 manually.
                $endgroup$
                – Roman
                2 hours ago












              • 1




                $begingroup$
                Or Outer[f[Sequence @@ #1, #2] &, Transpose@l1, l2, l3, 1] so you don't need to unravel #1 manually.
                $endgroup$
                – Roman
                2 hours ago







              1




              1




              $begingroup$
              Or Outer[f[Sequence @@ #1, #2] &, Transpose@l1, l2, l3, 1] so you don't need to unravel #1 manually.
              $endgroup$
              – Roman
              2 hours ago




              $begingroup$
              Or Outer[f[Sequence @@ #1, #2] &, Transpose@l1, l2, l3, 1] so you don't need to unravel #1 manually.
              $endgroup$
              – Roman
              2 hours ago











              2












              $begingroup$

              a = a1, a2, a3, a4, a5;
              b = b1, b2, b3, b4, b5;
              c = c1, c2, c3, c4, c5;

              Table[f[a[[j]], b[[j]], c[[k]]], j, 1, 5, k, 1, 5]


              enter image description here






              share|improve this answer









              $endgroup$

















                2












                $begingroup$

                a = a1, a2, a3, a4, a5;
                b = b1, b2, b3, b4, b5;
                c = c1, c2, c3, c4, c5;

                Table[f[a[[j]], b[[j]], c[[k]]], j, 1, 5, k, 1, 5]


                enter image description here






                share|improve this answer









                $endgroup$















                  2












                  2








                  2





                  $begingroup$

                  a = a1, a2, a3, a4, a5;
                  b = b1, b2, b3, b4, b5;
                  c = c1, c2, c3, c4, c5;

                  Table[f[a[[j]], b[[j]], c[[k]]], j, 1, 5, k, 1, 5]


                  enter image description here






                  share|improve this answer









                  $endgroup$



                  a = a1, a2, a3, a4, a5;
                  b = b1, b2, b3, b4, b5;
                  c = c1, c2, c3, c4, c5;

                  Table[f[a[[j]], b[[j]], c[[k]]], j, 1, 5, k, 1, 5]


                  enter image description here







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 2 hours ago









                  corey979corey979

                  20.9k64382




                  20.9k64382





















                      2












                      $begingroup$

                      Another possibility is to use the 3-arg version of Thread. With Sjoerd's example:



                      n = 3;
                      l1 = Array[a,n];
                      l2 = Array[b,n];
                      l3 = Array[c,n];


                      Using Thread:



                      Thread /@ Thread[f[l1, l2, l3], List, 2]



                      f[a[1], b[1], c[1]], f[a[1], b[1], c[2]],
                      f[a[1], b[1], c[3]], f[a[2], b[2], c[1]], f[a[2], b[2], c[2]],
                      f[a[2], b[2], c[3]], f[a[3], b[3], c[1]], f[a[3], b[3], c[2]],
                      f[a[3], b[3], c[3]]







                      share|improve this answer









                      $endgroup$

















                        2












                        $begingroup$

                        Another possibility is to use the 3-arg version of Thread. With Sjoerd's example:



                        n = 3;
                        l1 = Array[a,n];
                        l2 = Array[b,n];
                        l3 = Array[c,n];


                        Using Thread:



                        Thread /@ Thread[f[l1, l2, l3], List, 2]



                        f[a[1], b[1], c[1]], f[a[1], b[1], c[2]],
                        f[a[1], b[1], c[3]], f[a[2], b[2], c[1]], f[a[2], b[2], c[2]],
                        f[a[2], b[2], c[3]], f[a[3], b[3], c[1]], f[a[3], b[3], c[2]],
                        f[a[3], b[3], c[3]]







                        share|improve this answer









                        $endgroup$















                          2












                          2








                          2





                          $begingroup$

                          Another possibility is to use the 3-arg version of Thread. With Sjoerd's example:



                          n = 3;
                          l1 = Array[a,n];
                          l2 = Array[b,n];
                          l3 = Array[c,n];


                          Using Thread:



                          Thread /@ Thread[f[l1, l2, l3], List, 2]



                          f[a[1], b[1], c[1]], f[a[1], b[1], c[2]],
                          f[a[1], b[1], c[3]], f[a[2], b[2], c[1]], f[a[2], b[2], c[2]],
                          f[a[2], b[2], c[3]], f[a[3], b[3], c[1]], f[a[3], b[3], c[2]],
                          f[a[3], b[3], c[3]]







                          share|improve this answer









                          $endgroup$



                          Another possibility is to use the 3-arg version of Thread. With Sjoerd's example:



                          n = 3;
                          l1 = Array[a,n];
                          l2 = Array[b,n];
                          l3 = Array[c,n];


                          Using Thread:



                          Thread /@ Thread[f[l1, l2, l3], List, 2]



                          f[a[1], b[1], c[1]], f[a[1], b[1], c[2]],
                          f[a[1], b[1], c[3]], f[a[2], b[2], c[1]], f[a[2], b[2], c[2]],
                          f[a[2], b[2], c[3]], f[a[3], b[3], c[1]], f[a[3], b[3], c[2]],
                          f[a[3], b[3], c[3]]








                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered 1 hour ago









                          Carl WollCarl Woll

                          75.9k3100198




                          75.9k3100198



























                              draft saved

                              draft discarded
















































                              Thanks for contributing an answer to Mathematica Stack Exchange!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid …


                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.

                              Use MathJax to format equations. MathJax reference.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function ()
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f197144%2fapply-mapthread-to-all-but-one-variable%23new-answer', 'question_page');

                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              Which organization defines CJK Unified Ideographs? The Next CEO of Stack OverflowCharacters which have several different shapesHow useful are the kanji in reading Chinese?Can Chinese readers scan large amounts of text faster/more accurately than their alphabet-using counterparts?丼: why is “well” also “bowl of food”?What Does Unicode 8.0 Mean For Chinese?How are blanks indicated for placeholders in Chinese (like ???)Is there a dictionary of standard character variants?How to display CJK Extension F?How is it decided as to which character is used on the tech terminology?How does 子 come to mean 'midnight'?

                              Shenzhen Football Club Índice Elenco atual | Títulos | Referências Ligações externas | Menu de navegaçãoGooglenotíciaslivrosacadêmicoeditar«"Elenco"»Site oficialexpandindo-oeee

                              When We Were Young (canção de Adele) Índice Antecedentes e lançamento | Faixas e formatos | Performances e covers | Desempenho nas tabelas musicais | Créditos | Histórico de lançamento | Referências Menu de navegação«Best albums of 2015»«Adele - When We Were Young (Radio Date: 22-01-2016)»«When We Were Young - Single by Adele»«Adele: Inside Her Private Life and Triumphant Return»«adele interview: world exclusive first interview in three years»«Tobias Jesso Jr: since Adele tweeted his song, he's even bigger than his dad»«Adele interviews Tobias Jesso Jr: 'I think that a couple of the ideas we had could be rap songs'»«Adele on Her Return: 'I Was So Frightened That No One Cared'»«Tobias Jesso Jr. on working with Adele: 'I was as nervous as shit'»«How Ariel Rechtshaid Pushed Adele To Her Limit»«Adele Previews 'When We Were Young' on '60 Minutes' Teaser, Tops Trending 140»«Adele Performs New '25' Ballad, "When We Were Young" Live: Watch»«Which '25' Song Should Be Adele's Next Single?»«Adele's 'When We Were Young' Confirmed As Second Single From '25'»«Adele's new single artwork for 'When We Were Young' is perfectly adorable»«Adele at the BBC review: honest, funny and spectacular – Celebrity News News»«'Saturday Night Live': Adele Sings 'Hello' and 'When We Were Young'»«'Adele: Live in New York City' NBC Special – Set List Revealed!»«Adele Closes Out the 2016 Brit Awards With 'When We Were Young'»«What Is The Adele Live Tour Set List? There's No Way She'd Leave Out These 8 Songs»«See Demi Lovato's Soaring Cover of Adele's 'When We Were Young'»«'The Voice': 5 Best Moments From Week 1 Blind Auditions»«Adele – When We Were Young (Media Control Charts)»«Adele – When We Were Young (Entertainment Monitoring Africa)»«Adele – When We Were Young (ARIA Charts)»«Adele – When We Were Young (Ö3 Austria Top 40)»«Adele – When We Were Young (Ultratop 50)»«Adele – When We Were Young (Ultratop 40)»«Adele – When We Were Young (Canadian Hot 100)»«Adele – When We Were Young (Tracklisten)»«Adele – When We Were Young (The Official Charts Company)»«Adele – Hello (IFPI Slovenská Republika)»«Adele – When We Were Young (Productores de Música de España)»«Adele – When We Were Young (Billboard Hot 100)»«Adele – When We Were Young (Pop Songs)»«Adele – When We Were Young (Adult Pop Songs)»«Adele – When We Were Young (Hot Adult Contemporary Charts)»«Adele – When We Were Young (Hot Dance Club Songs)»«Adele – When We Were Young (Rock Airplay)»«Adele – When We Were Young (IFPI Finlândia)»«Adele – When We Were Young (Syndicat National de l'Éditon Phonographique)»«Adele – When We Were Young (Magyar Hanglemezkiadók Szövetsége)»«Adele – When We Were Young (Irish Recorded Music Association)»«Adele – When We Were Young (Mexico Airplay)»«Adele – When We Were Young (VG-lista)»«Adele – When We Were Young (NZ Top 40 Singles)»«Adele – When We Were Young (MegaCharts)»«Adele – When We Were Young (Związek Producentów Audio Video)»«Adele – When We Were Young (Portugal Digital Songs)»«Adele – When We Were Young (UK Indie Singles Chart)»«Adele – When We Were Young (UK Singles Chart)»«Adele – When We Were Young (Sverigetopplistan)»«Adele – When We Were Young (Schweizer Hitparade)»«Adele – When We Were Young (Portugal Digital Songs)»«Music Canada – Gold/Platinum – When We Were Young»«NZ Top 40 Singles Chart»«Certified Awards»e