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.

Cómo generar una lista de números de secuencia de manera más rápida utilizando Python.

¿Alguien puede mejorar el tiempo de procesamiento para generar una lista de números de secuencia? Aquí está mi código y tarda aproximadamente 0.05 segundos.

import torch
import time
import random
index = [torch.tensor(660000)]
st = time.time()
allowed = [x for x in range(index[0])] + [x for x in range(index[0] + 1,2000)]
index = random.sample(allowed, 1000)
print(time.time()-st)

Por favor, aconseje.

Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Python y rendimiento, sin duda hay formas de mejorar el tiempo de procesamiento para generar una lista de números de secuencia. Aquí hay algunas sugerencias:

    1. Utilizar un arreglo de numpy en lugar de una lista: Los arreglos de numpy están diseñados para ser más rápidos y eficientes que las listas. Puedes crear un arreglo de numpy utilizando la función numpy.arange(), que genera una secuencia de números desde un valor inicial hasta un valor final especificado.

    Ejemplo:

    import numpy as np
    mi_arreglo = np.arange(10) # genera un arreglo de numpy con valores del 0 al 9
    
    1. Utilizar comprensión de lista o expresión generadora: La comprensión de lista o expresión generadora puede ser más rápida que los bucles tradicionales. En lugar de utilizar dos comprensiones de lista separadas, puedes utilizar una única expresión generadora utilizando itertools.chain() o simplemente utilizar una única comprensión de lista.

    Ejemplo:

    import itertools
    permitidos = itertools.chain(range(indice[0]), range(indice[0]+1,2000))
    indice = random.sample(permitidos, 1000)
    

    o

    permitidos = [x for x in range(2000) if x != indice[0]]
    indice = random.sample(permitidos, 1000)
    
    1. Utilizar una función aleatoria de NumPy: En lugar de utilizar el módulo random de Python, puedes utilizar el generador de números aleatorios incorporado de NumPy, que se sabe que es más rápido y eficiente. La función numpy.random.choice() se puede utilizar para tomar muestras aleatorias de valores de una secuencia dada.

    Ejemplo:

    import numpy as np
    indice = np.random.choice(permitidos, size=1000, replace=False)
    

    Al implementar estas sugerencias, puedes potencialmente mejorar el tiempo de procesamiento para generar una lista de números de secuencia.

Comments are closed.