Replacing a column of a matrix

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
3
down vote

favorite












I want to replace a column of a matrix. The best I've been able to come up with is



a=RandomReal[9,5,5]
b=ConstantArray[0,5]
replacepos=4
Transpose[ReplacePart[Transpose[a], replacepos -> b]],


which does the trick, but looks awkward to me.










share|improve this question



















  • 2




    Did you search the site before posting? This has been asked a bunch of times...
    – Marius Ladegård Meyer
    Dec 5 at 12:13










  • There is the insert function I believe is useful for you.
    – Buddha_the_Scientist
    Dec 5 at 12:13










  • a.DiagonalMatrix[1, 1, 1, 0, 1]
    – user1066
    Dec 5 at 12:53










  • @MariusLadegårdMeyer, yes I did, but previous questions seemed to look for more complex things. Thanks
    – Patricio
    Dec 5 at 18:54














up vote
3
down vote

favorite












I want to replace a column of a matrix. The best I've been able to come up with is



a=RandomReal[9,5,5]
b=ConstantArray[0,5]
replacepos=4
Transpose[ReplacePart[Transpose[a], replacepos -> b]],


which does the trick, but looks awkward to me.










share|improve this question



















  • 2




    Did you search the site before posting? This has been asked a bunch of times...
    – Marius Ladegård Meyer
    Dec 5 at 12:13










  • There is the insert function I believe is useful for you.
    – Buddha_the_Scientist
    Dec 5 at 12:13










  • a.DiagonalMatrix[1, 1, 1, 0, 1]
    – user1066
    Dec 5 at 12:53










  • @MariusLadegårdMeyer, yes I did, but previous questions seemed to look for more complex things. Thanks
    – Patricio
    Dec 5 at 18:54












up vote
3
down vote

favorite









up vote
3
down vote

favorite











I want to replace a column of a matrix. The best I've been able to come up with is



a=RandomReal[9,5,5]
b=ConstantArray[0,5]
replacepos=4
Transpose[ReplacePart[Transpose[a], replacepos -> b]],


which does the trick, but looks awkward to me.










share|improve this question















I want to replace a column of a matrix. The best I've been able to come up with is



a=RandomReal[9,5,5]
b=ConstantArray[0,5]
replacepos=4
Transpose[ReplacePart[Transpose[a], replacepos -> b]],


which does the trick, but looks awkward to me.







list-manipulation matrix






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Dec 5 at 12:15









Henrik Schumacher

47.4k466134




47.4k466134










asked Dec 5 at 12:09









Patricio

406




406







  • 2




    Did you search the site before posting? This has been asked a bunch of times...
    – Marius Ladegård Meyer
    Dec 5 at 12:13










  • There is the insert function I believe is useful for you.
    – Buddha_the_Scientist
    Dec 5 at 12:13










  • a.DiagonalMatrix[1, 1, 1, 0, 1]
    – user1066
    Dec 5 at 12:53










  • @MariusLadegårdMeyer, yes I did, but previous questions seemed to look for more complex things. Thanks
    – Patricio
    Dec 5 at 18:54












  • 2




    Did you search the site before posting? This has been asked a bunch of times...
    – Marius Ladegård Meyer
    Dec 5 at 12:13










  • There is the insert function I believe is useful for you.
    – Buddha_the_Scientist
    Dec 5 at 12:13










  • a.DiagonalMatrix[1, 1, 1, 0, 1]
    – user1066
    Dec 5 at 12:53










  • @MariusLadegårdMeyer, yes I did, but previous questions seemed to look for more complex things. Thanks
    – Patricio
    Dec 5 at 18:54







2




2




Did you search the site before posting? This has been asked a bunch of times...
– Marius Ladegård Meyer
Dec 5 at 12:13




Did you search the site before posting? This has been asked a bunch of times...
– Marius Ladegård Meyer
Dec 5 at 12:13












There is the insert function I believe is useful for you.
– Buddha_the_Scientist
Dec 5 at 12:13




There is the insert function I believe is useful for you.
– Buddha_the_Scientist
Dec 5 at 12:13












a.DiagonalMatrix[1, 1, 1, 0, 1]
– user1066
Dec 5 at 12:53




a.DiagonalMatrix[1, 1, 1, 0, 1]
– user1066
Dec 5 at 12:53












@MariusLadegårdMeyer, yes I did, but previous questions seemed to look for more complex things. Thanks
– Patricio
Dec 5 at 18:54




@MariusLadegårdMeyer, yes I did, but previous questions seemed to look for more complex things. Thanks
– Patricio
Dec 5 at 18:54










3 Answers
3






active

oldest

votes

















up vote
3
down vote













What about



a[[All, replacepos]] = b


?






share|improve this answer



























    up vote
    2
    down vote













    Indeed, Transpose has to perform superfluous reorderings which are memory bound. This does the trick and should be fairly efficient:



    c = Module[buffer = a,
    buffer[[All, replacepos]] = b;
    buffer
    ]





    share|improve this answer





























      up vote
      1
      down vote













      a = RandomReal[9, 5, 5]
      (a[[#, 4]] = 0) & /@ Range@5
      a





      share|improve this answer




















        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',
        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%2f187357%2freplacing-a-column-of-a-matrix%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








        up vote
        3
        down vote













        What about



        a[[All, replacepos]] = b


        ?






        share|improve this answer
























          up vote
          3
          down vote













          What about



          a[[All, replacepos]] = b


          ?






          share|improve this answer






















            up vote
            3
            down vote










            up vote
            3
            down vote









            What about



            a[[All, replacepos]] = b


            ?






            share|improve this answer












            What about



            a[[All, replacepos]] = b


            ?







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Dec 5 at 13:15









            Ulrich Neumann

            6,555515




            6,555515




















                up vote
                2
                down vote













                Indeed, Transpose has to perform superfluous reorderings which are memory bound. This does the trick and should be fairly efficient:



                c = Module[buffer = a,
                buffer[[All, replacepos]] = b;
                buffer
                ]





                share|improve this answer


























                  up vote
                  2
                  down vote













                  Indeed, Transpose has to perform superfluous reorderings which are memory bound. This does the trick and should be fairly efficient:



                  c = Module[buffer = a,
                  buffer[[All, replacepos]] = b;
                  buffer
                  ]





                  share|improve this answer
























                    up vote
                    2
                    down vote










                    up vote
                    2
                    down vote









                    Indeed, Transpose has to perform superfluous reorderings which are memory bound. This does the trick and should be fairly efficient:



                    c = Module[buffer = a,
                    buffer[[All, replacepos]] = b;
                    buffer
                    ]





                    share|improve this answer














                    Indeed, Transpose has to perform superfluous reorderings which are memory bound. This does the trick and should be fairly efficient:



                    c = Module[buffer = a,
                    buffer[[All, replacepos]] = b;
                    buffer
                    ]






                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited Dec 5 at 14:42

























                    answered Dec 5 at 12:13









                    Henrik Schumacher

                    47.4k466134




                    47.4k466134




















                        up vote
                        1
                        down vote













                        a = RandomReal[9, 5, 5]
                        (a[[#, 4]] = 0) & /@ Range@5
                        a





                        share|improve this answer
























                          up vote
                          1
                          down vote













                          a = RandomReal[9, 5, 5]
                          (a[[#, 4]] = 0) & /@ Range@5
                          a





                          share|improve this answer






















                            up vote
                            1
                            down vote










                            up vote
                            1
                            down vote









                            a = RandomReal[9, 5, 5]
                            (a[[#, 4]] = 0) & /@ Range@5
                            a





                            share|improve this answer












                            a = RandomReal[9, 5, 5]
                            (a[[#, 4]] = 0) & /@ Range@5
                            a






                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered Dec 5 at 12:21









                            J42161217

                            3,712220




                            3,712220



























                                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.





                                Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                                Please pay close attention to the following guidance:


                                • 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.

                                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%2f187357%2freplacing-a-column-of-a-matrix%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

                                How to check contact read email or not when send email to Individual?

                                Displaying single band from multi-band raster using QGIS

                                How many registers does an x86_64 CPU actually have?