es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La manera más rápida de la comprensión de lista al calcular la distancia con una lista fija.

Tengo una lista,

a = [1,2,3]

Ahora tengo otra lista de listas (que es del mismo tamaño que la anterior),

x=[[1,2,3], [4,5,6], [7,8,9]]

Ahora quiero calcular la distancia entre cada elemento en x con a usando la distancia del coseno, así que estoy usando esto,

from scipy import spatial
distances = [spatial.distance.cosine(a, i) for i in x]

Ahora el método anterior está tardando mucho tiempo en ejecutarse, estoy buscando una forma alternativa de hacer esto de la manera más eficiente.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Un posible método alternativo para calcular la distancia del coseno entre cada elemento en x y a de manera más eficiente es utilizar comprensión de listas con matrices numpy en lugar de listas de Python. Las matrices numpy son generalmente más rápidas y eficientes al trabajar con datos numéricos. Aquí está un ejemplo:

    import numpy as np
    from scipy import spatial
    
    a = np.array([1,2,3])
    x = np.array([[1,2,3], [4,5,6], [7,8,9]])
    
    distances = [spatial.distance.cosine(a, i) for i in x]
    

    En este código actualizado, primero convertimos a y x en matrices numpy usando np.array(). Luego, podemos usar el código de comprensión de lista para calcular la distancia del coseno entre cada fila en x y a. Esto debería ser más rápido y eficiente que usar listas de Python.

Comments are closed.