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

Reply via email to