Python >> Tutoriel Python >  >> Python Tag >> NumPy

Comment créer une séquence de valeurs régulièrement espacées [Vanilla Python &Numpy Linspace]

Problème :Comment créer une séquence de valeurs régulièrement espacées

  • Utiliser du Python vanille pur et
  • Utiliser le linspace() de NumPy méthode.

Exemple  :Étant donné trois arguments :start=10, stop=20 , number_of_values=11 . Comment créer une séquence de 11 valeurs x0, x1, …, x10 où deux valeurs consécutives xi et x(i-1) avoir la même distance pour tous i dans {0, …, 10} .

# Given
start = 10
stop = 20
num_vals = 11

# Desired
magic_method(start, stop, num_vals)
# Returns [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

Ensuite, vous apprendrez deux méthodes qui permettent d'atteindre cet objectif !

Méthode 1 :Python vanille

Vous pouvez créer une séquence d'un certain nombre de flottants régulièrement espacés en deux étapes :

  • Calculez la différence entre deux nombres consécutifs sous la forme (stop-start)/(num_vals-1) en supposant que vous souhaitiez inclure des points de terminaison.
  • Créer une liste de nombres régulièrement espacés en utilisant la compréhension de liste :[start + i * delta for i in range(num_vals)]
# Problem Formulation
start = 10
stop = 20
num_vals = 11


# Method 1: Vanilla Python
delta = (stop-start)/(num_vals-1)
evenly_spaced = [start + i * delta for i in range(num_vals)]
print(evenly_spaced)

Méthode 2 :NumPy linspace()

Comment ça marche? Jetez un œil à ce graphique qui explique visuellement la fonction linspace de NumPy :

Il ne prend que trois arguments dans la plupart des cas :start , stop , et num . Pour atteindre l'objectif, vous utiliseriez le code suivant :

# Problem Formulation
start = 10
stop = 20
num_vals = 11

# Method 2: NumPy Linspace
import numpy as np
print(np.linspace(start, stop, num_vals))
# [10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.]

Notez que le résultat est une liste de flottants. Pour les convertir en int, vous pouvez utiliser à la place la ligne suivante :

print([int(x) for x in np.linspace(start, stop, num_vals)])
# [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

Énigme NumPy linspace()

Pouvez-vous résoudre ce casse-tête Python ?

[python]
importer numpy en tant que np

year =np.linspace(0, 365, 366)
print(int(year[-1] – year[-2]))
[/python]

Exercice :Quel est le résultat de ce puzzle ?

Vous pouvez également le résoudre sur notre application interactive de puzzle Python et suivre vos compétences Python ici :

Numpy est une bibliothèque Python populaire pour la science des données axée sur l'algèbre linéaire.

Ce puzzle concerne la fonction utile linspace. En particulier, linspace(start, stop, num) renvoie des nombres régulièrement espacés sur un intervalle donné [start, stop] , avec arrêt inclus.

Par exemple, linspace(0,3,4) renvoie la séquence de tableau numpy 0,1,2,3 (c'est-à-dire 4 nombres régulièrement espacés).

Cette fonction est particulièrement utile lors du tracé (ou de l'évaluation) d'une fonction. Le résultat de la fonction appliquée à des nombres régulièrement espacés révèle sa progression pour des valeurs de paramètres croissantes.

Vidéo associée


Prochain article