[Numpy-discussion] python array
Sudheer Joseph
sudheer.joseph at yahoo.com
Fri Mar 14 03:57:08 EDT 2014
Thank you Eric,
The compress is the option which is gets the correct numbers.
a = np.arange(-8, 8).reshape((4, 4))
In [67]: b = ma.masked_array(a, mask=a < 0)
In [68]: bb=b.compressed()
In [69]: b[b<4].size
Out[69]: 12
In [70]: bb=b.compressed()
In [71]: bb[bb<=4].size
Out[71]: 5
with best regards,
Sudheer
***************************************************************
Sudheer Joseph
Indian National Centre for Ocean Information Services
Ministry of Earth Sciences, Govt. of India
POST BOX NO: 21, IDA Jeedeemetla P.O.
Via Pragathi Nagar,Kukatpally, Hyderabad; Pin:5000 55
Tel:+91-40-23886047(O),Fax:+91-40-23895011(O),
Tel:+91-40-23044600(R),Tel:+91-40-9440832534(Mobile)
E-mail:sjo.India at gmail.com;sudheer.joseph at yahoo.com
Web- http://oppamthadathil.tripod.com
***************************************************************
--------------------------------------------
On Fri, 14/3/14, Eric Firing <efiring at hawaii.edu> wrote:
Subject: Re: [Numpy-discussion] python array
To: numpy-discussion at scipy.org
Date: Friday, 14 March, 2014, 7:20 AM
On 2014/03/13 9:09 PM, Sudheer Joseph
wrote:
> Dear Oslen,
>
> I had a detailed look at the example you send and
points I got were below
>
> a = np.arange(-8, 8).reshape((4, 4))
> b = ma.masked_array(a, mask=a < 0)
>
>
> Out[33]: b[b<4]
> masked_array(data = [-- -- -- -- -- -- -- -- 0 1 2 3],
>
mask = [ True True True
True True True True True False False
False False],
> fill_value =
999999)
> In [34]: b[b<4].shape
> Out[34]: (12,)
> In [35]: b[b<4].data
> Out[35]: array([-8, -7, -6, -5, -4, -3, -2, -1,
0, 1, 2, 3])
>
> This shows while numpy can do the bolean operation and
list the data meeting the criteria( by masking the data
further), it do not actually allow us get the count of data
that meets the crieteria. I was interested in count. Because
my objective was to find out how many numbers in the grid
fall under different catagory.( <=4 , >4 & <=8
, >8<=10) etc. and find the percentage of them.
>
> Is there a way to get the counts
correctly ? that is my botheration now !!
Certainly. If all you need are statistics of the type
you describe,
where you are working with a 1-D array, then extract the
unmasked values
into an ordinary ndarray, and work with that:
a = np.random.randn(100)
am = np.ma.masked_less(a, -0.2)
print am.count() # number of masked values
a_nomask = am.compressed()
print type(a_nomask)
print a_nomask.shape
# number of points with value less than 0.5:
print (a_nomask < 0.5).sum()
# (Boolean True is 1)
# Or if you want the actual array of values, not just the
count:
a_nomask[a_nomask < 0.5]
Eric
>
> with best regards,
> Sudheer
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion at scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion
More information about the NumPy-Discussion
mailing list