Dropping list elements from nested list after evaluation












4












$begingroup$


I need to create a new list from a nested list but using the evaluation as criteria to drop the elements. For example let's say that that I have the following list:



list1={{1,1,-(-1)^3,x,2*x},{1,1,(-1)^3,x,2*x},
{1,1,x,2*x,3*x},{1,1,-x,-2*x,-3*x}}


and I need to eliminate the elements of list1 that the absolute value of the third element give $1$, i.d. $-(-1)^3$ and $(-1)^3$, to obtain



 list2={{1,1,x,2*x,3*x},{1,1,-x,-2*x,-3*x}}


In this case, list1 was created with the code



For[i = 1, i < 4, i++,
For[j = 1, j < 4, j++,
list1[i, j, p_] = Sort[Eigenvalues[mat[i, j, p]]];
] ]


I have been trying to use Select but until now I am not been able to create list2 to plot it with



list2=ParallelTable[Select[Abs[eigval[i, j, p][[3]]], 
Abs[#] != 1 &] , {i, 1, 4}, {j,1,4}]


I am still learning to uses cases in Mathematica so I am not sure how to do it. Do you know if there is wise way to do it? Thanks in advance.










share|improve this question











$endgroup$

















    4












    $begingroup$


    I need to create a new list from a nested list but using the evaluation as criteria to drop the elements. For example let's say that that I have the following list:



    list1={{1,1,-(-1)^3,x,2*x},{1,1,(-1)^3,x,2*x},
    {1,1,x,2*x,3*x},{1,1,-x,-2*x,-3*x}}


    and I need to eliminate the elements of list1 that the absolute value of the third element give $1$, i.d. $-(-1)^3$ and $(-1)^3$, to obtain



     list2={{1,1,x,2*x,3*x},{1,1,-x,-2*x,-3*x}}


    In this case, list1 was created with the code



    For[i = 1, i < 4, i++,
    For[j = 1, j < 4, j++,
    list1[i, j, p_] = Sort[Eigenvalues[mat[i, j, p]]];
    ] ]


    I have been trying to use Select but until now I am not been able to create list2 to plot it with



    list2=ParallelTable[Select[Abs[eigval[i, j, p][[3]]], 
    Abs[#] != 1 &] , {i, 1, 4}, {j,1,4}]


    I am still learning to uses cases in Mathematica so I am not sure how to do it. Do you know if there is wise way to do it? Thanks in advance.










    share|improve this question











    $endgroup$















      4












      4








      4





      $begingroup$


      I need to create a new list from a nested list but using the evaluation as criteria to drop the elements. For example let's say that that I have the following list:



      list1={{1,1,-(-1)^3,x,2*x},{1,1,(-1)^3,x,2*x},
      {1,1,x,2*x,3*x},{1,1,-x,-2*x,-3*x}}


      and I need to eliminate the elements of list1 that the absolute value of the third element give $1$, i.d. $-(-1)^3$ and $(-1)^3$, to obtain



       list2={{1,1,x,2*x,3*x},{1,1,-x,-2*x,-3*x}}


      In this case, list1 was created with the code



      For[i = 1, i < 4, i++,
      For[j = 1, j < 4, j++,
      list1[i, j, p_] = Sort[Eigenvalues[mat[i, j, p]]];
      ] ]


      I have been trying to use Select but until now I am not been able to create list2 to plot it with



      list2=ParallelTable[Select[Abs[eigval[i, j, p][[3]]], 
      Abs[#] != 1 &] , {i, 1, 4}, {j,1,4}]


      I am still learning to uses cases in Mathematica so I am not sure how to do it. Do you know if there is wise way to do it? Thanks in advance.










      share|improve this question











      $endgroup$




      I need to create a new list from a nested list but using the evaluation as criteria to drop the elements. For example let's say that that I have the following list:



      list1={{1,1,-(-1)^3,x,2*x},{1,1,(-1)^3,x,2*x},
      {1,1,x,2*x,3*x},{1,1,-x,-2*x,-3*x}}


      and I need to eliminate the elements of list1 that the absolute value of the third element give $1$, i.d. $-(-1)^3$ and $(-1)^3$, to obtain



       list2={{1,1,x,2*x,3*x},{1,1,-x,-2*x,-3*x}}


      In this case, list1 was created with the code



      For[i = 1, i < 4, i++,
      For[j = 1, j < 4, j++,
      list1[i, j, p_] = Sort[Eigenvalues[mat[i, j, p]]];
      ] ]


      I have been trying to use Select but until now I am not been able to create list2 to plot it with



      list2=ParallelTable[Select[Abs[eigval[i, j, p][[3]]], 
      Abs[#] != 1 &] , {i, 1, 4}, {j,1,4}]


      I am still learning to uses cases in Mathematica so I am not sure how to do it. Do you know if there is wise way to do it? Thanks in advance.







      list-manipulation filtering






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited yesterday









      Roman

      5,20011131




      5,20011131










      asked yesterday









      morsmors

      716




      716






















          4 Answers
          4






          active

          oldest

          votes


















          7












          $begingroup$

          If you prefer using DeleteCases,



          list2 = DeleteCases[list1, _?(Abs[#[[3]]] == 1 &)]



          {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}







          share|improve this answer









          $endgroup$





















            5












            $begingroup$

            Delete[
            list1,
            Position[Abs[list1[[All, 3]]], 1]
            ]



            {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}







            share|improve this answer









            $endgroup$





















              5












              $begingroup$

              if you want to use Select, try this



              Select[list1,!NumberQ@#[[3]]||Abs[#[[3]]]!=1&]    



              {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}







              share|improve this answer









              $endgroup$





















                1












                $begingroup$

                This is pretty efficient on unpacked arrays (the Listable attribute assumes list1[[All, 3]] is a flat list, as it is in the OP's example):



                Block[{signal},
                SetAttributes[signal, Listable];
                signal[1] = 1; signal[_] = 0;
                Pick[list1, signal@Abs[list1[[All, 3]]], 0]
                ]
                (* {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}} *)


                (For packed arrays, one would probably want to use Unitize[x-1] instead of signal.)






                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%2f195019%2fdropping-list-elements-from-nested-list-after-evaluation%23new-answer', 'question_page');
                  }
                  );

                  Post as a guest















                  Required, but never shown

























                  4 Answers
                  4






                  active

                  oldest

                  votes








                  4 Answers
                  4






                  active

                  oldest

                  votes









                  active

                  oldest

                  votes






                  active

                  oldest

                  votes









                  7












                  $begingroup$

                  If you prefer using DeleteCases,



                  list2 = DeleteCases[list1, _?(Abs[#[[3]]] == 1 &)]



                  {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}







                  share|improve this answer









                  $endgroup$


















                    7












                    $begingroup$

                    If you prefer using DeleteCases,



                    list2 = DeleteCases[list1, _?(Abs[#[[3]]] == 1 &)]



                    {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}







                    share|improve this answer









                    $endgroup$
















                      7












                      7








                      7





                      $begingroup$

                      If you prefer using DeleteCases,



                      list2 = DeleteCases[list1, _?(Abs[#[[3]]] == 1 &)]



                      {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}







                      share|improve this answer









                      $endgroup$



                      If you prefer using DeleteCases,



                      list2 = DeleteCases[list1, _?(Abs[#[[3]]] == 1 &)]



                      {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}








                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered yesterday









                      RomanRoman

                      5,20011131




                      5,20011131























                          5












                          $begingroup$

                          Delete[
                          list1,
                          Position[Abs[list1[[All, 3]]], 1]
                          ]



                          {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}







                          share|improve this answer









                          $endgroup$


















                            5












                            $begingroup$

                            Delete[
                            list1,
                            Position[Abs[list1[[All, 3]]], 1]
                            ]



                            {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}







                            share|improve this answer









                            $endgroup$
















                              5












                              5








                              5





                              $begingroup$

                              Delete[
                              list1,
                              Position[Abs[list1[[All, 3]]], 1]
                              ]



                              {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}







                              share|improve this answer









                              $endgroup$



                              Delete[
                              list1,
                              Position[Abs[list1[[All, 3]]], 1]
                              ]



                              {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}








                              share|improve this answer












                              share|improve this answer



                              share|improve this answer










                              answered yesterday









                              Henrik SchumacherHenrik Schumacher

                              60k582168




                              60k582168























                                  5












                                  $begingroup$

                                  if you want to use Select, try this



                                  Select[list1,!NumberQ@#[[3]]||Abs[#[[3]]]!=1&]    



                                  {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}







                                  share|improve this answer









                                  $endgroup$


















                                    5












                                    $begingroup$

                                    if you want to use Select, try this



                                    Select[list1,!NumberQ@#[[3]]||Abs[#[[3]]]!=1&]    



                                    {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}







                                    share|improve this answer









                                    $endgroup$
















                                      5












                                      5








                                      5





                                      $begingroup$

                                      if you want to use Select, try this



                                      Select[list1,!NumberQ@#[[3]]||Abs[#[[3]]]!=1&]    



                                      {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}







                                      share|improve this answer









                                      $endgroup$



                                      if you want to use Select, try this



                                      Select[list1,!NumberQ@#[[3]]||Abs[#[[3]]]!=1&]    



                                      {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}








                                      share|improve this answer












                                      share|improve this answer



                                      share|improve this answer










                                      answered yesterday









                                      J42161217J42161217

                                      4,468324




                                      4,468324























                                          1












                                          $begingroup$

                                          This is pretty efficient on unpacked arrays (the Listable attribute assumes list1[[All, 3]] is a flat list, as it is in the OP's example):



                                          Block[{signal},
                                          SetAttributes[signal, Listable];
                                          signal[1] = 1; signal[_] = 0;
                                          Pick[list1, signal@Abs[list1[[All, 3]]], 0]
                                          ]
                                          (* {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}} *)


                                          (For packed arrays, one would probably want to use Unitize[x-1] instead of signal.)






                                          share|improve this answer









                                          $endgroup$


















                                            1












                                            $begingroup$

                                            This is pretty efficient on unpacked arrays (the Listable attribute assumes list1[[All, 3]] is a flat list, as it is in the OP's example):



                                            Block[{signal},
                                            SetAttributes[signal, Listable];
                                            signal[1] = 1; signal[_] = 0;
                                            Pick[list1, signal@Abs[list1[[All, 3]]], 0]
                                            ]
                                            (* {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}} *)


                                            (For packed arrays, one would probably want to use Unitize[x-1] instead of signal.)






                                            share|improve this answer









                                            $endgroup$
















                                              1












                                              1








                                              1





                                              $begingroup$

                                              This is pretty efficient on unpacked arrays (the Listable attribute assumes list1[[All, 3]] is a flat list, as it is in the OP's example):



                                              Block[{signal},
                                              SetAttributes[signal, Listable];
                                              signal[1] = 1; signal[_] = 0;
                                              Pick[list1, signal@Abs[list1[[All, 3]]], 0]
                                              ]
                                              (* {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}} *)


                                              (For packed arrays, one would probably want to use Unitize[x-1] instead of signal.)






                                              share|improve this answer









                                              $endgroup$



                                              This is pretty efficient on unpacked arrays (the Listable attribute assumes list1[[All, 3]] is a flat list, as it is in the OP's example):



                                              Block[{signal},
                                              SetAttributes[signal, Listable];
                                              signal[1] = 1; signal[_] = 0;
                                              Pick[list1, signal@Abs[list1[[All, 3]]], 0]
                                              ]
                                              (* {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}} *)


                                              (For packed arrays, one would probably want to use Unitize[x-1] instead of signal.)







                                              share|improve this answer












                                              share|improve this answer



                                              share|improve this answer










                                              answered yesterday









                                              Michael E2Michael E2

                                              150k12203482




                                              150k12203482






























                                                  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%2f195019%2fdropping-list-elements-from-nested-list-after-evaluation%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

                                                  GameSpot

                                                  connect to host localhost port 22: Connection refused

                                                  Getting a Wifi WPA2 wifi connection