Jan-13-2020, 05:43 AM
Can you try below to see if that helps,
Sandeep
GANGA SANDEEP KUMAR
import numpy as np import math def find_nearest(array, value): array = np.asarray(array) idx = (np.abs(array - value)).argmin() return array[idx] def clusterAnalysis(reflectance): totalsize=np.size(reflectance)# total size evenarray = [] oddarray =[] for i in range(totalsize): if (reflectance[i]*10)%2 ==0: #reading upto first decimal value and checking for even number, but this goes wrong like if given 3.0, it thinks as even while it is actually odd. evenarray.append(reflectance[i]) else: oddarray.append(reflectance[i]) np_even = np.array(evenarray) np_odd = np.array(oddarray) mean_even=np.mean(np_even)#average of even numbers in cluster 2 mean_odd=np.mean(np_odd)# average of odd numbers in cluster 1 #print(totalsize) #print(np_even) #print(np_odd) #print(mean_even) #print(mean_odd) array=[] clusterAssigments=[] array.append(mean_even) array.append(mean_odd) #print(array) for i in range(totalsize): if find_nearest(array,reflectance[i]) == mean_even: clusterAssigments.append(1) else: clusterAssigments.append(2) clusterAssigment=np.array(clusterAssigments) return clusterAssigment print(clusterAnalysis(np.array([1.7, 1.6, 1.3, 1.3, 2.8, 1.4,2.8, 2.6, 1.6, 2.7])))
Output:python test2.py
[2 2 2 2 1 2 1 1 2 1]
Best Regards,Sandeep
GANGA SANDEEP KUMAR