Re: [Numpy-discussion] copy and paste arrays from matlab
On Wed, May 13, 2009 at 12:39 PM, Robin wrote: > [crossposted to numpy-discussion and mlabwrap-user] > > Hi, > > Please find attached Python code for the opposite direction - ie > format Python arrays for copy and pasting into an interactive Matlab > session. > > It doesn't look as nice because newlines are row seperators in matlab > so I put everything on one line. Also theres no way to input >2D > arrays in Matlab that I know of without using reshape. You could use ``...`` as row continuation, and the matlab help mentions ``cat`` to build multi dimensional arrays. But cat seems to require nesting for more than 3 dimensions, so is not really an improvement to reshape. >> C = cat(4, cat(3,[1,1;2,3],[1,2;3,3]),cat(3,[1,1;2,3],[1,2;3,3])); >> size(C) ans = 2 2 2 2 Thanks, it will be useful. Josef > > In [286]: from mmat import mmat > In [289]: x = rand(4,2) > In [290]: mmat(x,'%2.3f') > [ 0.897 0.074 ; 0.005 0.174 ; 0.207 0.736 ; 0.453 0.111 ] > In [287]: mmat(x,'%2.3f') > reshape([ [ 0.405 0.361 0.609 ; 0.249 0.275 0.620 ; 0.740 0.754 > 0.699 ; 0.280 0.053 0.181 ] [ 0.796 0.114 0.720 ; 0.296 0.692 > 0.352 ; 0.218 0.894 0.818 ; 0.709 0.946 0.860 ] ],[ 4 3 2 ]) > In [288]: mmat(x) > reshape([ [ 4.046905655728e-01 3.605995195844e-01 6.089653771166e-01 > ; 2.491999503702e-01 2.751880043180e-01 6.199629932480e-01 ; > 7.401974485581e-01 7.537929345351e-01 6.991798908866e-01 ; > 2.800494872019e-01 5.258468515210e-02 1.812706305994e-01 ] [ > 7.957907133899e-01 1.144010574386e-01 7.203522053853e-01 ; > 2.962977637560e-01 6.920657079182e-01 3.522371076632e-01 ; > 2.181950954650e-01 8.936401263709e-01 8.177351741233e-01 ; > 7.092517323839e-01 9.458774967489e-01 8.595104463863e-01 ] ],[ 4 3 2 > ]) > > Hope someone else finds it useful. > > Cheers > > Robin > > On Tue, May 12, 2009 at 2:12 PM, Robin wrote: >> [crossposted to numpy-discussion and mlabwrap-user] >> >> Hi, >> >> I wrote a little utility class in Matlab that inherits from double and >> overloads the display function so you can easily print matlab arrays >> of arbitrary dimension in Numpy format for easy copy and pasting. >> >> I have to work a lot with other peoples code - and while mlabwrap and >> reading and writing is great, sometimes I find it easier and quicker >> just to copy and paste smaller arrays between interactive sessions. >> >> Anyway you put it in your Matlab path then you can do >> x = rand(2,3,4,5); >> a = array(x) >> >> You can specify the fprintf style format string either in the >> constructor or after: >> a = array(x,'%2.6f') >> a.format = '%2.2f' >> >> eg: x = rand(4,3,2); array(x) >> ans = >> >> array([[[2.071566461449581e-01, 3.501602151029837e-02], >> [1.589135260727248e-01, 3.766891927380323e-01], >> [8.757206127846399e-01, 7.259276565938600e-01]], >> >> [[7.570839415557700e-01, 3.974969411279816e-02], >> [8.109207856487061e-01, 5.043242527988604e-01], >> [6.351863794630047e-01, 7.013280585980169e-01]], >> >> [[8.863281096304466e-01, 9.885678912262633e-01], >> [4.765077527169480e-01, 7.634956792870943e-01], >> [9.728134909163066e-02, 4.588908258125032e-01]], >> >> [[4.722298594969571e-01, 6.861815984603373e-01], >> [1.162875322461844e-01, 4.887479677951201e-02], >> [9.084394562396312e-01, 5.822948089552498e-01]]]) >> >> It's a while since I've tried to do anything like this in Matlab and I >> must admit I found it pretty painful, so I hope it can be useful to >> someone else! >> >> I will try and do one for Python for copying and pasting to Matlab, >> but I'm expecting that to be a lot easier! >> >> Cheers >> >> Robin >> > > ___ > Numpy-discussion mailing list > Numpy-discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > > ___ Numpy-discussion mailing list Numpy-discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
Re: [Numpy-discussion] copy and paste arrays from matlab
[crossposted to numpy-discussion and mlabwrap-user] Hi, Please find attached Python code for the opposite direction - ie format Python arrays for copy and pasting into an interactive Matlab session. It doesn't look as nice because newlines are row seperators in matlab so I put everything on one line. Also theres no way to input >2D arrays in Matlab that I know of without using reshape. In [286]: from mmat import mmat In [289]: x = rand(4,2) In [290]: mmat(x,'%2.3f') [ 0.897 0.074 ; 0.005 0.174 ; 0.207 0.736 ; 0.453 0.111 ] In [287]: mmat(x,'%2.3f') reshape([ [ 0.405 0.361 0.609 ; 0.249 0.275 0.620 ; 0.740 0.754 0.699 ; 0.280 0.053 0.181 ] [ 0.796 0.114 0.720 ; 0.296 0.692 0.352 ; 0.218 0.894 0.818 ; 0.709 0.946 0.860 ] ],[ 4 3 2 ]) In [288]: mmat(x) reshape([ [ 4.046905655728e-01 3.605995195844e-01 6.089653771166e-01 ; 2.491999503702e-01 2.751880043180e-01 6.199629932480e-01 ; 7.401974485581e-01 7.537929345351e-01 6.991798908866e-01 ; 2.800494872019e-01 5.258468515210e-02 1.812706305994e-01 ] [ 7.957907133899e-01 1.144010574386e-01 7.203522053853e-01 ; 2.962977637560e-01 6.920657079182e-01 3.522371076632e-01 ; 2.181950954650e-01 8.936401263709e-01 8.177351741233e-01 ; 7.092517323839e-01 9.458774967489e-01 8.595104463863e-01 ] ],[ 4 3 2 ]) Hope someone else finds it useful. Cheers Robin On Tue, May 12, 2009 at 2:12 PM, Robin wrote: > [crossposted to numpy-discussion and mlabwrap-user] > > Hi, > > I wrote a little utility class in Matlab that inherits from double and > overloads the display function so you can easily print matlab arrays > of arbitrary dimension in Numpy format for easy copy and pasting. > > I have to work a lot with other peoples code - and while mlabwrap and > reading and writing is great, sometimes I find it easier and quicker > just to copy and paste smaller arrays between interactive sessions. > > Anyway you put it in your Matlab path then you can do > x = rand(2,3,4,5); > a = array(x) > > You can specify the fprintf style format string either in the > constructor or after: > a = array(x,'%2.6f') > a.format = '%2.2f' > > eg: >>> x = rand(4,3,2); >>> array(x) > ans = > > array([[[2.071566461449581e-01, 3.501602151029837e-02], > [1.589135260727248e-01, 3.766891927380323e-01], > [8.757206127846399e-01, 7.259276565938600e-01]], > > [[7.570839415557700e-01, 3.974969411279816e-02], > [8.109207856487061e-01, 5.043242527988604e-01], > [6.351863794630047e-01, 7.013280585980169e-01]], > > [[8.863281096304466e-01, 9.885678912262633e-01], > [4.765077527169480e-01, 7.634956792870943e-01], > [9.728134909163066e-02, 4.588908258125032e-01]], > > [[4.722298594969571e-01, 6.861815984603373e-01], > [1.162875322461844e-01, 4.887479677951201e-02], > [9.084394562396312e-01, 5.822948089552498e-01]]]) > > It's a while since I've tried to do anything like this in Matlab and I > must admit I found it pretty painful, so I hope it can be useful to > someone else! > > I will try and do one for Python for copying and pasting to Matlab, > but I'm expecting that to be a lot easier! > > Cheers > > Robin > mmat.py Description: Binary data ___ Numpy-discussion mailing list Numpy-discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
[Numpy-discussion] copy and paste arrays from matlab
[crossposted to numpy-discussion and mlabwrap-user] Hi, I wrote a little utility class in Matlab that inherits from double and overloads the display function so you can easily print matlab arrays of arbitrary dimension in Numpy format for easy copy and pasting. I have to work a lot with other peoples code - and while mlabwrap and reading and writing is great, sometimes I find it easier and quicker just to copy and paste smaller arrays between interactive sessions. Anyway you put it in your Matlab path then you can do x = rand(2,3,4,5); a = array(x) You can specify the fprintf style format string either in the constructor or after: a = array(x,'%2.6f') a.format = '%2.2f' eg: >> x = rand(4,3,2); >> array(x) ans = array([[[2.071566461449581e-01, 3.501602151029837e-02], [1.589135260727248e-01, 3.766891927380323e-01], [8.757206127846399e-01, 7.259276565938600e-01]], [[7.570839415557700e-01, 3.974969411279816e-02], [8.109207856487061e-01, 5.043242527988604e-01], [6.351863794630047e-01, 7.013280585980169e-01]], [[8.863281096304466e-01, 9.885678912262633e-01], [4.765077527169480e-01, 7.634956792870943e-01], [9.728134909163066e-02, 4.588908258125032e-01]], [[4.722298594969571e-01, 6.861815984603373e-01], [1.162875322461844e-01, 4.887479677951201e-02], [9.084394562396312e-01, 5.822948089552498e-01]]]) It's a while since I've tried to do anything like this in Matlab and I must admit I found it pretty painful, so I hope it can be useful to someone else! I will try and do one for Python for copying and pasting to Matlab, but I'm expecting that to be a lot easier! Cheers Robin array.m Description: Binary data ___ Numpy-discussion mailing list Numpy-discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion