no data exclution and unique combination.

giuseppe.amatulli at gmail.com giuseppe.amatulli at gmail.com
Thu Aug 9 16:06:01 EDT 2012


Terry and MRAB,
thanks for yours suggestions, 
in the end i found this solution 


mask=( a != 0 ) & ( b != 0  )

a_mask=a[mask]
b_mask=b[mask]

array2D = np.array(zip(a_mask,b_mask))

unique=dict()
for row in  array2D :
    row = tuple(row)
    if row in unique:
        unique[row] += 1
    else:
        unique[row] = 1

print unique
{(4, 5): 1, (5, 4): 1, (4, 4): 2, (2, 3): 1, (4, 3): 2}

I choose this solution because i could not install "from collections import Counter". 
Anyway how i can print to a file the unique results without the brackets and obtain something like this?
4 5 1
5 4 1
4 4 2
2 3 1
4 3 2

Thanks in advance
Best regards.
Giuseppe








On Tuesday, 24 July 2012 13:27:05 UTC-5, giuseppe... at gmail.com  wrote:
> Hi,
> 
> would like to take eliminate a specific number in an array and its correspondent in an other array, and vice-versa. 
> 
> 
> 
> given 
> 
> 
> 
> a=np.array([1,2,4,4,5,4,1,4,1,1,2,4])
> 
> b=np.array([1,2,3,5,4,4,1,3,2,1,3,4])
> 
> 
> 
> no_data_a=1
> 
> no_data_b=2
> 
> 
> 
> a_clean=array([4,4,5,4,4,4])
> 
> b_clean=array([3,5,4,4,3,4])
> 
> 
> 
> after i need to calculate unique combination in pairs to count the observations 
> 
> and obtain
> 
> (4,3,2)
> 
> (4,5,1)
> 
> (5,4,1)
> 
> (4,4,2)
> 
> 
> 
> For the fist task i did
> 
> 
> 
> a_No_data_a = a[a != no_data_a]
> 
> b_No_data_a = b[a != no_data_a]
> 
> 
> 
> b_clean = b_No_data_a[b_No_data_a != no_data_b]
> 
> a_clean  = a_No_data_a[a_No_data_a != no_data_b]
> 
> 
> 
> but the results are not really stable. 
> 
> 
> 
> For the second task 
> 
> The np.unique would solve the problem if it can be apply to a two arrays.
> 
> 
> 
> Any idea?
> 
> thanks in advance 
> 
> Giuseppe




More information about the Python-list mailing list