Data Science with python ( Pandas Pandas Pandas ) Project test case #3 | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
0

Data Science with python ( Pandas Pandas Pandas ) Project test case #3

test case #3 always fails. checked everything. older discussions are saying case #3 checks the 'None' output, which works perfectly in my code. Can anyone spot the bug? Thank you! https://code.sololearn.com/ca11A18a38a4

15th Apr 2021, 8:00 PM
Nader Nabil
Nader Nabil - avatar
6 Answers
+ 7
import numpy as np n = int(input()) X=[] for i in range(n): X.append([float(x) for x in input().split()]) x1 = np.array([0, 0]) x2 = np.array([2, 2]) X=np.array(X) a=[] b=[] for i in range(n): if np.sqrt(((X[i]-x1)**2).sum()) <= np.sqrt(((X[i]-x2)**2).sum()): a.append(X[i]) elif np.sqrt(((X[i]-x1)**2).sum()) > np.sqrt(((X[i]-x2)**2).sum()): b.append(X[i]) a=np.array(a) b=np.array(b) sum_a_1=0 sum_a_2=0 sum_b_1=0 sum_b_2=0 for i in range(len(a)): sum_a_1+=a[i][0] sum_a_2+=a[i][1] for i in range(len(b)): sum_b_1+=b[i][0] sum_b_2+=b[i][1] if (len(a)!=0): sum_a_1/=len(a) sum_a_2/=len(a) sum_a_1 = sum_a_1.round(2) sum_a_2 = sum_a_2.round(2) if (len(b)!=0): sum_b_1/=len(b) sum_b_2/=len(b) sum_b_1 = sum_b_1.round(2) sum_b_2 = sum_b_2.round(2) c=[] c.append(sum_a_1) c.append(sum_a_2) d=[] d.append(sum_b_1) d.append(sum_b_2) c=np.array(c) d=np.array(d) if len(a)==0: print(None) else: print(c) if len(b)==0: print(
18th Apr 2021, 1:30 AM
Jonnie Sagarino
Jonnie Sagarino - avatar
+ 3
#try this code credit to Namrata Dattani import numpy as np first = np.array([[0., 0.]]) second = np.array([[2., 2.]]) n = int(input()) data = [] for i in range(n): data.append([float(i) for i in input().split()]) data = np.array(data).reshape((-1,2)) for i in range(n): dist1 = np.sqrt(((data[i]-first[0])**2).sum()) dist2 = np.sqrt(((data[i]-second[0])**2).sum()) if (dist1) <= (dist2): first = np.vstack((first,data[i])) else: second = np.vstack((second,data[i])) if first.size > 2: mean1 = np.mean(first[1:], axis=0) print(np.around(mean1, decimals=2)) else: print(None) if second.size > 2: mean2 = np.mean(second[1:], axis=0) print(np.around(mean2, decimals=2)) else: print(None)
29th Apr 2021, 12:25 PM
Mardin D. Maloloy-on
Mardin D. Maloloy-on - avatar
4th Jun 2021, 3:46 PM
MohammadJavad Mobasheri
MohammadJavad Mobasheri - avatar
0
Also: https://www.sololearn.com/compiler-playground/cEIuqF5925EB It takes the ideas from Jonnie Sagarino and Mardin D & combines into one. Doesn't require matrix multiplication as in NimAA's post, althugh that is the shortest solution. Hope this is elegant n' readable for someone (like me) new to Python coding. With in-code comments.
10th Sep 2022, 6:28 AM
Mark Cockroft
Mark Cockroft - avatar
0
This solves all cases. For case #3, use 'print(None)' will do. >>>> import numpy as np import pandas as pd # return the displacement betwen two points def dp(pt, cpt): return ((pt[0]-cpt[0])**2 + (pt[1]-cpt[1])**2)**0.5 # list all points with their cooridinates def pts(): plist = [] n = int(input()) for i in range(n): plist.append([float(x) for x in input().split()]) return plist # find out which cluster a given point is assigned to def srt(): cls = [] for i in points: dps = [] for j in range(len(centroids)): dps.append(dp(i, centroids[j])) cls.append(dps.index(min(dps))) return cls # calculate the new centroid def findnew(): df = pd.DataFrame({"points":points, "clusters":srt()}) for i in range(len(centroids)): cat = df['points'][df['clusters']==i].tolist() if cat: print(np.mean(cat, axis=0).round(2)) else: print(None) # __main__ centroids = ((0,0), (2,2)) points = pts() findnew()
27th Nov 2022, 1:11 AM
will
- 1
Jonnie Sagarino thank you! Worked like a charm
18th Apr 2021, 9:18 AM
Nader Nabil
Nader Nabil - avatar