NumPy - Insert an array of zeros after specified indices









up vote
5
down vote

favorite
3












My code is:



x=np.linspace(1,5,5)

a=np.insert(x,np.arange(1,5,1),np.zeros(3))


The output I want is:



[1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5]


The error I get is:




ValueError: shape mismatch: value array of shape (3,) could not be
broadcast to indexing result of shape (4,)




When I do:



x=np.linspace(1,5,5)

a=np.insert(x,np.arange(1,5,1),0)


The out is:



array([1., 0., 2., 0., 3., 0., 4., 0., 5.])


Why it doesn't work when I try to insert an array?



P.S. I I cannot use loops










share|improve this question









New contributor




Danjmp is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.























    up vote
    5
    down vote

    favorite
    3












    My code is:



    x=np.linspace(1,5,5)

    a=np.insert(x,np.arange(1,5,1),np.zeros(3))


    The output I want is:



    [1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5]


    The error I get is:




    ValueError: shape mismatch: value array of shape (3,) could not be
    broadcast to indexing result of shape (4,)




    When I do:



    x=np.linspace(1,5,5)

    a=np.insert(x,np.arange(1,5,1),0)


    The out is:



    array([1., 0., 2., 0., 3., 0., 4., 0., 5.])


    Why it doesn't work when I try to insert an array?



    P.S. I I cannot use loops










    share|improve this question









    New contributor




    Danjmp is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.





















      up vote
      5
      down vote

      favorite
      3









      up vote
      5
      down vote

      favorite
      3






      3





      My code is:



      x=np.linspace(1,5,5)

      a=np.insert(x,np.arange(1,5,1),np.zeros(3))


      The output I want is:



      [1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5]


      The error I get is:




      ValueError: shape mismatch: value array of shape (3,) could not be
      broadcast to indexing result of shape (4,)




      When I do:



      x=np.linspace(1,5,5)

      a=np.insert(x,np.arange(1,5,1),0)


      The out is:



      array([1., 0., 2., 0., 3., 0., 4., 0., 5.])


      Why it doesn't work when I try to insert an array?



      P.S. I I cannot use loops










      share|improve this question









      New contributor




      Danjmp is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      My code is:



      x=np.linspace(1,5,5)

      a=np.insert(x,np.arange(1,5,1),np.zeros(3))


      The output I want is:



      [1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5]


      The error I get is:




      ValueError: shape mismatch: value array of shape (3,) could not be
      broadcast to indexing result of shape (4,)




      When I do:



      x=np.linspace(1,5,5)

      a=np.insert(x,np.arange(1,5,1),0)


      The out is:



      array([1., 0., 2., 0., 3., 0., 4., 0., 5.])


      Why it doesn't work when I try to insert an array?



      P.S. I I cannot use loops







      python arrays numpy






      share|improve this question









      New contributor




      Danjmp is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question









      New contributor




      Danjmp is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question








      edited Nov 8 at 13:50









      jpp

      80.2k184695




      80.2k184695






      New contributor




      Danjmp is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked Nov 8 at 13:01









      Danjmp

      283




      283




      New contributor




      Danjmp is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Danjmp is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Danjmp is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          2 Answers
          2






          active

          oldest

          votes

















          up vote
          2
          down vote



          accepted










          Another option:



          np.hstack((x[:,None], np.zeros((5,3)))).flatten()[:-3]


          gives:



          array([ 1., 0., 0., 0., 2., 0., 0., 0., 3., 0., 0., 0., 4.,
          0., 0., 0., 5.])


          That is, pretend x is a column vector and stack a 5x3 block of zeros to the right of it and then flatten.






          share|improve this answer



























            up vote
            3
            down vote













            You can use np.repeat to feed repeated indices. For a 1d array, thhe obj argument for np.insert reference individual indices.



            x = np.linspace(1, 5, 5)

            a = np.insert(x, np.repeat(np.arange(1, 5, 1), 3), 0)

            array([ 1., 0., 0., 0., 2., 0., 0., 0., 3., 0., 0., 0., 4.,
            0., 0., 0., 5.])





            share|improve this answer






















              Your Answer






              StackExchange.ifUsing("editor", function ()
              StackExchange.using("externalEditor", function ()
              StackExchange.using("snippets", function ()
              StackExchange.snippets.init();
              );
              );
              , "code-snippets");

              StackExchange.ready(function()
              var channelOptions =
              tags: "".split(" "),
              id: "1"
              ;
              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',
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              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
              );



              );






              Danjmp is a new contributor. Be nice, and check out our Code of Conduct.









               

              draft saved


              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53208295%2fnumpy-insert-an-array-of-zeros-after-specified-indices%23new-answer', 'question_page');

              );

              Post as a guest






























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes








              up vote
              2
              down vote



              accepted










              Another option:



              np.hstack((x[:,None], np.zeros((5,3)))).flatten()[:-3]


              gives:



              array([ 1., 0., 0., 0., 2., 0., 0., 0., 3., 0., 0., 0., 4.,
              0., 0., 0., 5.])


              That is, pretend x is a column vector and stack a 5x3 block of zeros to the right of it and then flatten.






              share|improve this answer
























                up vote
                2
                down vote



                accepted










                Another option:



                np.hstack((x[:,None], np.zeros((5,3)))).flatten()[:-3]


                gives:



                array([ 1., 0., 0., 0., 2., 0., 0., 0., 3., 0., 0., 0., 4.,
                0., 0., 0., 5.])


                That is, pretend x is a column vector and stack a 5x3 block of zeros to the right of it and then flatten.






                share|improve this answer






















                  up vote
                  2
                  down vote



                  accepted







                  up vote
                  2
                  down vote



                  accepted






                  Another option:



                  np.hstack((x[:,None], np.zeros((5,3)))).flatten()[:-3]


                  gives:



                  array([ 1., 0., 0., 0., 2., 0., 0., 0., 3., 0., 0., 0., 4.,
                  0., 0., 0., 5.])


                  That is, pretend x is a column vector and stack a 5x3 block of zeros to the right of it and then flatten.






                  share|improve this answer












                  Another option:



                  np.hstack((x[:,None], np.zeros((5,3)))).flatten()[:-3]


                  gives:



                  array([ 1., 0., 0., 0., 2., 0., 0., 0., 3., 0., 0., 0., 4.,
                  0., 0., 0., 5.])


                  That is, pretend x is a column vector and stack a 5x3 block of zeros to the right of it and then flatten.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 8 at 13:19









                  xnx

                  15k43670




                  15k43670






















                      up vote
                      3
                      down vote













                      You can use np.repeat to feed repeated indices. For a 1d array, thhe obj argument for np.insert reference individual indices.



                      x = np.linspace(1, 5, 5)

                      a = np.insert(x, np.repeat(np.arange(1, 5, 1), 3), 0)

                      array([ 1., 0., 0., 0., 2., 0., 0., 0., 3., 0., 0., 0., 4.,
                      0., 0., 0., 5.])





                      share|improve this answer


























                        up vote
                        3
                        down vote













                        You can use np.repeat to feed repeated indices. For a 1d array, thhe obj argument for np.insert reference individual indices.



                        x = np.linspace(1, 5, 5)

                        a = np.insert(x, np.repeat(np.arange(1, 5, 1), 3), 0)

                        array([ 1., 0., 0., 0., 2., 0., 0., 0., 3., 0., 0., 0., 4.,
                        0., 0., 0., 5.])





                        share|improve this answer
























                          up vote
                          3
                          down vote










                          up vote
                          3
                          down vote









                          You can use np.repeat to feed repeated indices. For a 1d array, thhe obj argument for np.insert reference individual indices.



                          x = np.linspace(1, 5, 5)

                          a = np.insert(x, np.repeat(np.arange(1, 5, 1), 3), 0)

                          array([ 1., 0., 0., 0., 2., 0., 0., 0., 3., 0., 0., 0., 4.,
                          0., 0., 0., 5.])





                          share|improve this answer














                          You can use np.repeat to feed repeated indices. For a 1d array, thhe obj argument for np.insert reference individual indices.



                          x = np.linspace(1, 5, 5)

                          a = np.insert(x, np.repeat(np.arange(1, 5, 1), 3), 0)

                          array([ 1., 0., 0., 0., 2., 0., 0., 0., 3., 0., 0., 0., 4.,
                          0., 0., 0., 5.])






                          share|improve this answer














                          share|improve this answer



                          share|improve this answer








                          edited Nov 8 at 14:25

























                          answered Nov 8 at 13:16









                          jpp

                          80.2k184695




                          80.2k184695




















                              Danjmp is a new contributor. Be nice, and check out our Code of Conduct.









                               

                              draft saved


                              draft discarded


















                              Danjmp is a new contributor. Be nice, and check out our Code of Conduct.












                              Danjmp is a new contributor. Be nice, and check out our Code of Conduct.











                              Danjmp is a new contributor. Be nice, and check out our Code of Conduct.













                               


                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function ()
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53208295%2fnumpy-insert-an-array-of-zeros-after-specified-indices%23new-answer', 'question_page');

                              );

                              Post as a guest














































































                              Popular posts from this blog

                              𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

                              Edmonton

                              Crossroads (UK TV series)