Pour étudier le comportement numérique d'une fonction à six paramètres, vous recherchez une méthode efficace pour parcourir son espace de paramètres. Initialement, vous avez utilisé une fonction personnalisée pour combiner les valeurs du tableau, suivie de réduire() pour l'appliquer à plusieurs reprises. Bien que fonctionnelle, cette approche s'est avérée lourde.
Les versions plus récentes de NumPy (1.8.x et supérieures) offrent une solution bien supérieure : numpy.meshgrid(). Cette fonction permet de créer des tableaux multidimensionnels comprenant toutes les combinaisons possibles de tableaux d'entrée. Dans votre cas :
import numpy as np a = np.arange(0, 1, 0.1) combinations = np.array(np.meshgrid(a, a, a, a, a, a)).T.reshape(-1, 6)
Cette approche améliore considérablement les performances, comme le démontre le benchmark suivant :
%timeit np.array(np.meshgrid(a, a, a, a, a, a)).T.reshape(-1, 6) # Output: 10000 loops, best of 3: 74.1 µs per loop
Vous pouvez également utiliser la fonction personnalisée suivante pour un contrôle maximal :
def cartesian(arrays): arr = np.empty((len(arrays.shape), len(arrays))) for n, array in enumerate(arrays): arr[n, :] = array return arr.T.reshape(-1, len(arrays)) %timeit cartesian([a, a, a, a, a, a]) # Output: 1000 loops, best of 3: 135 µs per loop
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!