Le code trouve le plus petit élément dans chaque liste, je veux ajouter ce point de données à une liste basée sur la liste d'où il provient. Je veux aussi pouvoir trouver la moyenne de chaque groupe.Comment ajouter des éléments à une liste à partir d'une autre liste?
import numpy as np
centroids = np.array([[3,44],[5,15],[99,12]])
dataPoints = np.array([[2,4],[17,4],[45,2],[45,7],[16,32],[32,14],[20,56],[68,33]])
def size(vector):
return np.sqrt(sum(x**2 for x in vector))
def distance(vector1, vector2):
return size(vector1 - vector2)
def distances(array1, array2):
lists = [[distance(vector1, vector2) for vector2 in array2] for vector1 in array1]
x = 1
for i in lists:
print ('Distance from Centroid {}:{}\n'.format(x,i))
x=x+1
print map(min, zip(*lists))
distances(centroids,dataPoints)
Ma sortie:
Distance from Centroid 1:[40.01249804748511, 42.379240200834182, 59.396969619669989, 55.97320787662612, 17.691806012954132, 41.725292090050132, 20.808652046684813, 65.924198895398035]
Distance from Centroid 2:[11.401754250991379, 16.278820596099706, 42.059481689626182, 40.792156108742276, 20.248456731316587, 27.018512172212592, 43.657759905886145, 65.520989003524662]
Distance from Centroid 3:[97.329337817535773, 82.389319696183918, 54.918120870983927, 54.230987451824994, 85.37564055396598, 67.029844099475568, 90.426765949026404, 37.443290453698111]
[11.401754250991379, 16.278820596099706, 42.059481689626182, 40.792156108742276, 17.691806012954132, 27.018512172212592, 20.808652046684813, 37.443290453698111]
sortie supplémentaire souhaité:
Cluster 1: [[16,32],[20,56]]
Cluster 2: [[2,4],[17,4],[45,2],[45,7],[32,14]]
Cluster 3: [[68,33]]
List of means :[[18,44],[28.2,6.2],[68,33]]
Pour cet exemple, la quantité de centroïdes/clusters sont définis. Et si elles sont dynamiques et si les listes de grappes doivent être créées à la volée?
Ce sont des * tableaux *. Non * listes *. Ou au moins, vous semblez mélanger les deux. Pourquoi ne pas s'en tenir aux listes? –
@ juanpa.arrivillaga Si je vérifie le type (listes), il renvoie la valeur 'liste'. Je suis conscient que je commence avec des tableaux numériques. Dans votre concept à la solution du problème, l'utilisation de l'un ou l'autre a-t-elle un avantage sur l'autre? – cparks10
@Oui, 'lists' sera une liste car il s'agit du résultat d'une * compréhension-liste *. Cependant, je ne suis pas sûr de ce que vous essayez de faire. –