Counting certain elements in listsSplitting up delimited data in listsCounting function, comparing listsTake the next element in a nested listIssue with very large lists in Mathematica“renormalising” a listTiming and memory use is critical:fast partitioning of binary sparse arrayReplicate sublist in new listLess than Nothingrebinning of dataCounting elements in a list

Sword in the Stone story where the sword was held in place by electromagnets

Did CPM support custom hardware using device drivers?

Does the statement `int val = (++i > ++j) ? ++i : ++j;` invoke undefined behavior?

Russian cases: A few examples, I'm really confused

Can anyone tell me why this program fails?

Theorems like the Lovász Local Lemma?

Do I need life insurance if I can cover my own funeral costs?

Why did it take so long to abandon sail after steamships were demonstrated?

Why is stat::st_size 0 for devices but at the same time lseek defines the device size correctly?

At what level can a dragon innately cast its spells?

2D counterpart of std::array in C++17

Instead of Universal Basic Income, why not Universal Basic NEEDS?

Should we release the security issues we found in our product as CVE or we can just update those on weekly release notes?

How do anti-virus programs start at Windows boot?

What has been your most complicated TikZ drawing?

What is a good source for large tables on the properties of water?

Font with correct density?

Identifying the interval from A♭ to D♯

What options are left, if Britain cannot decide?

Good allowance savings plan?

What is the greatest age difference between a married couple in Tanach?

Make a transparent 448*448 image

Could the Saturn V actually have launched astronauts around Venus?

How to answer questions about my characters?



Counting certain elements in lists


Splitting up delimited data in listsCounting function, comparing listsTake the next element in a nested listIssue with very large lists in Mathematica“renormalising” a listTiming and memory use is critical:fast partitioning of binary sparse arrayReplicate sublist in new listLess than Nothingrebinning of dataCounting elements in a list













4












$begingroup$


I have the following data set:



n1 = 1000;
data1 = #, RandomInteger[3, 20] & /@ Range[n1];

Dimensions@data1
1000, 2


I want to count how often data1[[All, 2]] == 1.



My solution, which seems to be wrong:



result1 = Table[
Count[Flatten@(data1[[i, 2]]), u_ /; u == 1],
i, 1, n1
];

Dimensions@result1
1000


Now I have 50 appended lists of data1 (= data2).



n3 = 50;

data2 = Array[0 &, n3];

Do[
data2[[i]] = #, RandomInteger[3, 20] & /@ Range[n1];
, i, 1, n3
];

Dimensions@data2
50, 1000, 2


I want to count how often data2[[j, i, 2]] == 1, where i, 1, n1 and j, 1, n3.



My solution for this more complicated list:



result2 = Array[0 &, n3];

Do[
result2[[j]] =
Table[
Count[Flatten@(data2[[j, i, 2]]), u_ /; u == 1],
i, 1, n1
];
, j, 1, n3
];

Dimensions@result2
50, 1000


How can I replace the Do loops in both cases and improve the performance?










share|improve this question











$endgroup$
















    4












    $begingroup$


    I have the following data set:



    n1 = 1000;
    data1 = #, RandomInteger[3, 20] & /@ Range[n1];

    Dimensions@data1
    1000, 2


    I want to count how often data1[[All, 2]] == 1.



    My solution, which seems to be wrong:



    result1 = Table[
    Count[Flatten@(data1[[i, 2]]), u_ /; u == 1],
    i, 1, n1
    ];

    Dimensions@result1
    1000


    Now I have 50 appended lists of data1 (= data2).



    n3 = 50;

    data2 = Array[0 &, n3];

    Do[
    data2[[i]] = #, RandomInteger[3, 20] & /@ Range[n1];
    , i, 1, n3
    ];

    Dimensions@data2
    50, 1000, 2


    I want to count how often data2[[j, i, 2]] == 1, where i, 1, n1 and j, 1, n3.



    My solution for this more complicated list:



    result2 = Array[0 &, n3];

    Do[
    result2[[j]] =
    Table[
    Count[Flatten@(data2[[j, i, 2]]), u_ /; u == 1],
    i, 1, n1
    ];
    , j, 1, n3
    ];

    Dimensions@result2
    50, 1000


    How can I replace the Do loops in both cases and improve the performance?










    share|improve this question











    $endgroup$














      4












      4








      4





      $begingroup$


      I have the following data set:



      n1 = 1000;
      data1 = #, RandomInteger[3, 20] & /@ Range[n1];

      Dimensions@data1
      1000, 2


      I want to count how often data1[[All, 2]] == 1.



      My solution, which seems to be wrong:



      result1 = Table[
      Count[Flatten@(data1[[i, 2]]), u_ /; u == 1],
      i, 1, n1
      ];

      Dimensions@result1
      1000


      Now I have 50 appended lists of data1 (= data2).



      n3 = 50;

      data2 = Array[0 &, n3];

      Do[
      data2[[i]] = #, RandomInteger[3, 20] & /@ Range[n1];
      , i, 1, n3
      ];

      Dimensions@data2
      50, 1000, 2


      I want to count how often data2[[j, i, 2]] == 1, where i, 1, n1 and j, 1, n3.



      My solution for this more complicated list:



      result2 = Array[0 &, n3];

      Do[
      result2[[j]] =
      Table[
      Count[Flatten@(data2[[j, i, 2]]), u_ /; u == 1],
      i, 1, n1
      ];
      , j, 1, n3
      ];

      Dimensions@result2
      50, 1000


      How can I replace the Do loops in both cases and improve the performance?










      share|improve this question











      $endgroup$




      I have the following data set:



      n1 = 1000;
      data1 = #, RandomInteger[3, 20] & /@ Range[n1];

      Dimensions@data1
      1000, 2


      I want to count how often data1[[All, 2]] == 1.



      My solution, which seems to be wrong:



      result1 = Table[
      Count[Flatten@(data1[[i, 2]]), u_ /; u == 1],
      i, 1, n1
      ];

      Dimensions@result1
      1000


      Now I have 50 appended lists of data1 (= data2).



      n3 = 50;

      data2 = Array[0 &, n3];

      Do[
      data2[[i]] = #, RandomInteger[3, 20] & /@ Range[n1];
      , i, 1, n3
      ];

      Dimensions@data2
      50, 1000, 2


      I want to count how often data2[[j, i, 2]] == 1, where i, 1, n1 and j, 1, n3.



      My solution for this more complicated list:



      result2 = Array[0 &, n3];

      Do[
      result2[[j]] =
      Table[
      Count[Flatten@(data2[[j, i, 2]]), u_ /; u == 1],
      i, 1, n1
      ];
      , j, 1, n3
      ];

      Dimensions@result2
      50, 1000


      How can I replace the Do loops in both cases and improve the performance?







      list-manipulation






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 1 hour ago







      lio

















      asked 2 hours ago









      liolio

      1,140217




      1,140217




















          2 Answers
          2






          active

          oldest

          votes


















          4












          $begingroup$

          For your result1:



          Count[1] /@ data1[[All, 2, 1]]


          For your result2:



          Map[Count[1], data2[[All, All, 2, 1]], 2];





          share|improve this answer











          $endgroup$












          • $begingroup$
            This is great ...
            $endgroup$
            – lio
            1 hour ago










          • $begingroup$
            Do you have an idea for result2 improvement?
            $endgroup$
            – lio
            1 hour ago










          • $begingroup$
            @lio Yes, I've added something for result2 as well. You can check that they give the same output as your result1 and result2 respectively.
            $endgroup$
            – MarcoB
            1 hour ago


















          3












          $begingroup$

          r1 = Total[1 - Unitize[data1[[All, 2, 1]] - 1], 2] 

          Short @ %



          5,5,4,6,5,8,5,6,5,4,8,6,3,3,2,7,2,9,5,6,4,5,3,8,7,6,8,3,7,5,9,4,7,6,5,4,5,5,<<925>>,7,5,6,6,3,5,4,6,6,9,7,9,5,6,4,3,8,4,4,6,6,9,6,6,3,8,3,4,1,8,4,4,4,5,7,8,5




          r2 = Join @@@ Total[1 - Unitize[data2[[All, All, 2]] - 1], 4];
          r2 // Dimensions



          50, 1000







          share|improve this answer











          $endgroup$












          • $begingroup$
            Great ... what do you think about result2. Now the Indices in the result2 double loop are correct.
            $endgroup$
            – lio
            1 hour ago










          • $begingroup$
            @lio, please see the update.
            $endgroup$
            – kglr
            1 hour ago










          Your Answer





          StackExchange.ifUsing("editor", function ()
          return StackExchange.using("mathjaxEditing", function ()
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
          );
          );
          , "mathjax-editing");

          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%2f193270%2fcounting-certain-elements-in-lists%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          2 Answers
          2






          active

          oldest

          votes








          2 Answers
          2






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          4












          $begingroup$

          For your result1:



          Count[1] /@ data1[[All, 2, 1]]


          For your result2:



          Map[Count[1], data2[[All, All, 2, 1]], 2];





          share|improve this answer











          $endgroup$












          • $begingroup$
            This is great ...
            $endgroup$
            – lio
            1 hour ago










          • $begingroup$
            Do you have an idea for result2 improvement?
            $endgroup$
            – lio
            1 hour ago










          • $begingroup$
            @lio Yes, I've added something for result2 as well. You can check that they give the same output as your result1 and result2 respectively.
            $endgroup$
            – MarcoB
            1 hour ago















          4












          $begingroup$

          For your result1:



          Count[1] /@ data1[[All, 2, 1]]


          For your result2:



          Map[Count[1], data2[[All, All, 2, 1]], 2];





          share|improve this answer











          $endgroup$












          • $begingroup$
            This is great ...
            $endgroup$
            – lio
            1 hour ago










          • $begingroup$
            Do you have an idea for result2 improvement?
            $endgroup$
            – lio
            1 hour ago










          • $begingroup$
            @lio Yes, I've added something for result2 as well. You can check that they give the same output as your result1 and result2 respectively.
            $endgroup$
            – MarcoB
            1 hour ago













          4












          4








          4





          $begingroup$

          For your result1:



          Count[1] /@ data1[[All, 2, 1]]


          For your result2:



          Map[Count[1], data2[[All, All, 2, 1]], 2];





          share|improve this answer











          $endgroup$



          For your result1:



          Count[1] /@ data1[[All, 2, 1]]


          For your result2:



          Map[Count[1], data2[[All, All, 2, 1]], 2];






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 1 hour ago

























          answered 2 hours ago









          MarcoBMarcoB

          37.5k556113




          37.5k556113











          • $begingroup$
            This is great ...
            $endgroup$
            – lio
            1 hour ago










          • $begingroup$
            Do you have an idea for result2 improvement?
            $endgroup$
            – lio
            1 hour ago










          • $begingroup$
            @lio Yes, I've added something for result2 as well. You can check that they give the same output as your result1 and result2 respectively.
            $endgroup$
            – MarcoB
            1 hour ago
















          • $begingroup$
            This is great ...
            $endgroup$
            – lio
            1 hour ago










          • $begingroup$
            Do you have an idea for result2 improvement?
            $endgroup$
            – lio
            1 hour ago










          • $begingroup$
            @lio Yes, I've added something for result2 as well. You can check that they give the same output as your result1 and result2 respectively.
            $endgroup$
            – MarcoB
            1 hour ago















          $begingroup$
          This is great ...
          $endgroup$
          – lio
          1 hour ago




          $begingroup$
          This is great ...
          $endgroup$
          – lio
          1 hour ago












          $begingroup$
          Do you have an idea for result2 improvement?
          $endgroup$
          – lio
          1 hour ago




          $begingroup$
          Do you have an idea for result2 improvement?
          $endgroup$
          – lio
          1 hour ago












          $begingroup$
          @lio Yes, I've added something for result2 as well. You can check that they give the same output as your result1 and result2 respectively.
          $endgroup$
          – MarcoB
          1 hour ago




          $begingroup$
          @lio Yes, I've added something for result2 as well. You can check that they give the same output as your result1 and result2 respectively.
          $endgroup$
          – MarcoB
          1 hour ago











          3












          $begingroup$

          r1 = Total[1 - Unitize[data1[[All, 2, 1]] - 1], 2] 

          Short @ %



          5,5,4,6,5,8,5,6,5,4,8,6,3,3,2,7,2,9,5,6,4,5,3,8,7,6,8,3,7,5,9,4,7,6,5,4,5,5,<<925>>,7,5,6,6,3,5,4,6,6,9,7,9,5,6,4,3,8,4,4,6,6,9,6,6,3,8,3,4,1,8,4,4,4,5,7,8,5




          r2 = Join @@@ Total[1 - Unitize[data2[[All, All, 2]] - 1], 4];
          r2 // Dimensions



          50, 1000







          share|improve this answer











          $endgroup$












          • $begingroup$
            Great ... what do you think about result2. Now the Indices in the result2 double loop are correct.
            $endgroup$
            – lio
            1 hour ago










          • $begingroup$
            @lio, please see the update.
            $endgroup$
            – kglr
            1 hour ago















          3












          $begingroup$

          r1 = Total[1 - Unitize[data1[[All, 2, 1]] - 1], 2] 

          Short @ %



          5,5,4,6,5,8,5,6,5,4,8,6,3,3,2,7,2,9,5,6,4,5,3,8,7,6,8,3,7,5,9,4,7,6,5,4,5,5,<<925>>,7,5,6,6,3,5,4,6,6,9,7,9,5,6,4,3,8,4,4,6,6,9,6,6,3,8,3,4,1,8,4,4,4,5,7,8,5




          r2 = Join @@@ Total[1 - Unitize[data2[[All, All, 2]] - 1], 4];
          r2 // Dimensions



          50, 1000







          share|improve this answer











          $endgroup$












          • $begingroup$
            Great ... what do you think about result2. Now the Indices in the result2 double loop are correct.
            $endgroup$
            – lio
            1 hour ago










          • $begingroup$
            @lio, please see the update.
            $endgroup$
            – kglr
            1 hour ago













          3












          3








          3





          $begingroup$

          r1 = Total[1 - Unitize[data1[[All, 2, 1]] - 1], 2] 

          Short @ %



          5,5,4,6,5,8,5,6,5,4,8,6,3,3,2,7,2,9,5,6,4,5,3,8,7,6,8,3,7,5,9,4,7,6,5,4,5,5,<<925>>,7,5,6,6,3,5,4,6,6,9,7,9,5,6,4,3,8,4,4,6,6,9,6,6,3,8,3,4,1,8,4,4,4,5,7,8,5




          r2 = Join @@@ Total[1 - Unitize[data2[[All, All, 2]] - 1], 4];
          r2 // Dimensions



          50, 1000







          share|improve this answer











          $endgroup$



          r1 = Total[1 - Unitize[data1[[All, 2, 1]] - 1], 2] 

          Short @ %



          5,5,4,6,5,8,5,6,5,4,8,6,3,3,2,7,2,9,5,6,4,5,3,8,7,6,8,3,7,5,9,4,7,6,5,4,5,5,<<925>>,7,5,6,6,3,5,4,6,6,9,7,9,5,6,4,3,8,4,4,6,6,9,6,6,3,8,3,4,1,8,4,4,4,5,7,8,5




          r2 = Join @@@ Total[1 - Unitize[data2[[All, All, 2]] - 1], 4];
          r2 // Dimensions



          50, 1000








          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 1 hour ago

























          answered 1 hour ago









          kglrkglr

          188k10205422




          188k10205422











          • $begingroup$
            Great ... what do you think about result2. Now the Indices in the result2 double loop are correct.
            $endgroup$
            – lio
            1 hour ago










          • $begingroup$
            @lio, please see the update.
            $endgroup$
            – kglr
            1 hour ago
















          • $begingroup$
            Great ... what do you think about result2. Now the Indices in the result2 double loop are correct.
            $endgroup$
            – lio
            1 hour ago










          • $begingroup$
            @lio, please see the update.
            $endgroup$
            – kglr
            1 hour ago















          $begingroup$
          Great ... what do you think about result2. Now the Indices in the result2 double loop are correct.
          $endgroup$
          – lio
          1 hour ago




          $begingroup$
          Great ... what do you think about result2. Now the Indices in the result2 double loop are correct.
          $endgroup$
          – lio
          1 hour ago












          $begingroup$
          @lio, please see the update.
          $endgroup$
          – kglr
          1 hour ago




          $begingroup$
          @lio, please see the update.
          $endgroup$
          – kglr
          1 hour ago

















          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%2f193270%2fcounting-certain-elements-in-lists%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

          बाताम इन्हें भी देखें सन्दर्भ दिक्चालन सूची1°05′00″N 104°02′0″E / 1.08333°N 104.03333°E / 1.08333; 104.033331°05′00″N 104°02′0″E / 1.08333°N 104.03333°E / 1.08333; 104.03333

          Why is the 'in' operator throwing an error with a string literal instead of logging false?Why can't I use switch statement on a String?Python join: why is it string.join(list) instead of list.join(string)?Multiline String Literal in C#Why does comparing strings using either '==' or 'is' sometimes produce a different result?How to initialize an array's length in javascript?How can I print literal curly-brace characters in python string and also use .format on it?Why does ++[[]][+[]]+[+[]] return the string “10”?Why is char[] preferred over String for passwords?Why does this code using random strings print “hello world”?jQuery.inArray(), how to use it right?

          How can we generalize the fact of finite dimensional vector space to an infinte dimensional case?$k[x]$-module and cyclic module over a finite dimensional vector spaceSubspace of a finite dimensional space is finite dimensionalIf V is an infinite-dimensional vector space, and S is an infinite-dimensional subspace of V, must the dimension of V/S be finite? ExplainWhy is an infinite dimensional space so different than a finite dimensional one?base for finite dimensional vector space is not infinite dimensional vector space?Any finite-dimensional vector space is the dual space of anotherHaving Trouble Understanding Meaning Of A Finite-Dimensional Vector SpaceProve that “Every subspaces of a finite-dimensional vector space is finite-dimensional”Ring as a finite dimensional Vector space over a field KQuestion regarding basis and dimension