[Numpy-discussion] Crosstabulation
eat
e.antero.tammi at gmail.com
Mon Jul 19 15:30:27 EDT 2010
Ionut Sandric <sandricionut <at> yahoo.com> writes:
> Thank you Zack:
>
> By raster data I mean classified slope gradient (derived from a dem),
landuse-landcover, lithology etc. A
> crosstabulation analysis will give me a table with the common areas for each
class from each raster and
> this will go into other analysis. I can do it with other softwares (like
ArcGIS DEsktop etc), but I would
> like to have all with numpy or to build something on top of numpy
>
> Thanks's again
>
> Ionut
>
> ----- Original Message -----
> From: "Zachary Pincus" <zachary.pincus <at> yale.edu>
> To: "Discussion of Numerical Python" <numpy-discussion <at> scipy.org>
> Sent: Wednesday, July 14, 2010 9:42:49 PM GMT +02:00 Athens, Beirut,
Bucharest, Istanbul
> Subject: Re: [Numpy-discussion] Crosstabulation
>
> Hi Ionut,
>
> Check out the "tabular" package:
> http://parsemydata.com/tabular/index.html
>
> It seems to be basically what you want... it does "pivot tables" (aka
> crosstabulation), it's built on top of numpy, and has simple data IO
> tools.
>
> Also check out this discussion on "pivot tables" from the numpy list a
> while ago:
> http://mail.scipy.org/pipermail/numpy-discussion/2007-August/028739.html
>
> One question -- what do you mean by "raster data"? In my arena, that
> usually means "images"... and I'm not sure what a crosstabulation on
> image data would mean!
>
> Zach
>
> On Jul 14, 2010, at 2:28 PM, Ionut Sandric wrote:
>
> >
> > Sorry, the first email was sent before to finish it...
> >
> >
> > Hi:
> >
> > I have two raster data and I would like to do a crosstabulation
> > between them and export the results to a table in a text file. Is it
> > possible to do it with NumPy? Does someone have an example?
> >
> > Thank you,
> >
> > Ionut
> >
> >
> >
> > _______________________________________________
> > NumPy-Discussion mailing list
> > NumPy-Discussion <at> scipy.org
> > http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion <at> scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
Hi,
You may be able to adapt this simple script to your case.
import numpy as np
# generate some test data
def gen(b, e, m, n):
return np.arange(b, e+ 1), np.random.randint(b, e+ 1, (m, n))
m, n= 15, 15
c1, d1= gen(0, 3, m, n); print d1
c2, d2= gen(3, 5, m, n); print d2
# perform actual x-tabulation
xtab= np.zeros((len(c1), len(c2)), np.int)
for i in xrange(len(c1)):
tmp= d2[c1[i]== d1]
for j in xrange(len(c2)):
xtab[i, j]= np.sum(c2[j]== tmp)
print xtab, np.sum(xtab)== np.prod(d1.shape)
Anyway it's straightforward to extend it to nd x-tabulations ;-).
My 2 cents,
eat
More information about the NumPy-Discussion
mailing list