Yeah, sorry, this is the output: In [3]: import numpy In [4]: import rpy2 In [5]: import rpy2.robjects as robjects In [7]: marr = robjects.r.array(robjects.IntVector(range(54)),dim= robjects.IntVector([9,2,3]))
In [8]: marrpy = numpy.array(marr) In [9]: print marrpy.flatten() ------> print(marrpy.flatten()) [ 0 2 4 9 11 13 1 3 5 10 12 14 2 4 6 11 13 15 3 5 7 12 14 16 4 6 8 13 15 17 5 7 9 14 16 18 6 8 10 15 17 19 7 9 11 16 18 20 8 10 12 17 19 21] In [10]: print robjects.r['as.vector'](marr) -------> print(robjects.r['as.vector'](marr)) [1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [26] 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [51] 50 51 52 53 In [15]: print marrpy.flatten('F') -------> print(marrpy.flatten('F')) [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21] I was prepared for differences due to column/row ordering, but this doesn't seem to be the problem. Works fine on matrices: In [11]: mat = robjects.r.matrix(robjects.IntVector(range(54)),nrow=9) In [12]: matpy = numpy.array(mat) In [13]: print mat -------> print(mat) [,1] [,2] [,3] [,4] [,5] [,6] [1,] 0 9 18 27 36 45 [2,] 1 10 19 28 37 46 [3,] 2 11 20 29 38 47 [4,] 3 12 21 30 39 48 [5,] 4 13 22 31 40 49 [6,] 5 14 23 32 41 50 [7,] 6 15 24 33 42 51 [8,] 7 16 25 34 43 52 [9,] 8 17 26 35 44 53 In [14]: print matpy -------> print(matpy) [[ 0 9 18 27 36 45] [ 1 10 19 28 37 46] [ 2 11 20 29 38 47] [ 3 12 21 30 39 48] [ 4 13 22 31 40 49] [ 5 14 23 32 41 50] [ 6 15 24 33 42 51] [ 7 16 25 34 43 52] [ 8 17 26 35 44 53]] Regards, Robert -----Original Message----- From: Laurent Gautier [mailto:lgaut...@gmail.com] Sent: Monday, 1 November 2010 4:58 PM To: Denham Robert Cc: RPy help, support and design discussion list Subject: Re: [Rpy] converting r array to numpy array On 01/11/10 07:28, Denham Robert wrote: > I got caught out converting a 3d array in R to a numpy array. I did > something like: > > import numpy > import rpy2 > import rpy2.robjects as robjects > > marr = robjects.r.array(robjects.IntVector(range(54)),dim= > robjects.IntVector([9,2,3])) > marrpy = numpy.array(marr) > print marrpy.flatten() > print robjects.r['as.vector'](marr) > > Which clearly doesn't work (at least for me, using rpy2.1.7, R-10.0 on > 64bit suse linux). Could you be more specific about "does not work" ? If you are after getting the same output for the two print calls, this is not happening because arrays are being stored "column-major" by R by while numpy has "row-major" as a default. Try: print marrpy.flatten('F') > The matrix version does work, eg > > mat = robjects.r.matrix(robjects.IntVector(range(54)),nrow=9) > matpy = numpy.array(mat) > print mat > print matpy > > I checked the documentation, and found examples for vectors and > matrices, but not for arrays, but also no warnings. So, I was just > wondering, is this supposed to work? If it is, a hint on why it > doesn't work for me would be good. If it isn't supposed to work, I was > wondering if it were possible to throw an error or something. It is supposed to work, but not claim about an absence of bugs is made. Best, Laurent > Regards, > Robert > > > > Robert Denham > Environmental Statistician, Remote Sensing Centre Environment and > Resource Sciences Phone 07 3896 9899 (ext 69899) > Email: robert.den...@derm.qld.gov.au > www.derm.qld.gov.au<http://www.derm.qld.gov.au/> > > Department of Environment and Resource Management QCCE Building, 80 > Meiers Rd, Indooroopilly QLD 4068 > > > +----------------------------------------------------------------+ > Think B4U Print > 1 ream of paper = 6% of a tree and 5.4kg CO2 in the atmosphere > 3 sheets of A4 paper = 1 litre of water > +----------------------------------------------------------------+ > > > ---------------------------------------------------------------------- > -------- Nokia and AT&T present the 2010 Calling All Innovators-North > America contest Create new apps& games for the Nokia N8 for consumers > in U.S. and Canada $10 million total in prizes - $4M cash, 500 > devices, nearly $6M in marketing Develop with Nokia Qt SDK, Web > Runtime, or Java and Publish to Ovi Store > http://p.sf.net/sfu/nokia-dev2dev > _______________________________________________ > rpy-list mailing list > rpy-list@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/rpy-list ------------------------------------------------------------------------------ Nokia and AT&T present the 2010 Calling All Innovators-North America contest Create new apps & games for the Nokia N8 for consumers in U.S. and Canada $10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store http://p.sf.net/sfu/nokia-dev2dev _______________________________________________ rpy-list mailing list rpy-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rpy-list