Calculando el vector promedio para cada elemento único en una lista.
Tengo una lista de la siguiente forma:
mylist = [([256, 408, 147, 628], 'size'), ([628, 526, 236, 676], 'camera'),
([526, 876, 676, 541], 'camera'), ([567, 731, 724, 203], 'size'),.....]
Y tiene un tamaño de alrededor de 8000+.
Contiene muchas entradas duplicadas, en realidad solo hay 100 palabras únicas en esta lista y me gustaría reducir esta lista a un tamaño de 100 (el número de palabras únicas) tomando el vector promedio de cada aparición de esa palabra.
Por ejemplo, mi nueva lista tendrá la forma:
newlist = [([411.5,569.5,435.5,415.5],'size',.....] # He tomado los valores promedio de 'size'
aquí y quiero repetir esto para cada palabra única
y tendrá una longitud de 100.
¿Cómo puedo hacer esto?
davy.ai
Para realizar esta tarea, puedes utilizar un diccionario para almacenar el promedio de cada palabra única. Recorre la lista original y, para cada elemento, extrae la palabra y el vector. Luego, agrega el vector a la clave correspondiente en el diccionario e incrementa un contador para llevar un registro del número de apariciones de esa palabra.
Después de recorrer toda la lista, puedes recorrer el diccionario y calcular el vector promedio para cada palabra dividiendo la suma de los vectores por el número de apariciones. Almacena este vector promedio y la palabra como una tupla en la nueva lista.
Aquí tienes un código de ejemplo para realizar esta tarea:
La variable
newlist
resultante tendrá la forma deseada con palabras únicas y sus vectores promedio correspondientes.