Compte tenu de la ndarray Ce jeu linéaire par morceau linéaire pour les points Comment tous les interpolants peuvent-ils être calculés efficacement et renvoyés ensemble pour tous Valeurs de t code> -
t [:, 0, 0] code> peut Évalué pour
[0, 0,66666667, 1.33333333, 2.] code> comme suit en utilisant numpy.interp - p>
FP code> - p>
3 Réponses :
Vous pouvez essayer sciped.interpoler.interp1d code>:
Comme l'interpolation est 1D avec la modification des valeurs avec des boucles explicites p> sur ma machine La deuxième option fonctionne dans la moitié du temps. p> Comme le résultat et le paramètre a des formes différentes que je semble Donner à créer deux objets NP.NDiter un pour le paramètre et un pour le résultat. Ceci est ma première tentative d'utilisation Il est légèrement plus lent que les boucles explicites et moins faciles à suivez que l'une des autres solutions. P> p> y code>, il doit être exécuté pour chaque tranche de 1D de t. Il est probablement plus rapide de boucler explicitement, mais néatre à la boucle à l'aide de np.apply_along_axis
np.nditer code> strud> p>
nditer code> pour que cela puisse être sur compliqué. P>
@Tis Chris Je remarque que vous utilisez des techniques de bouclage standard Python pour itérer sur les deuxième et troisième axes de t code>. Y a-t-il des avantages à utiliser
numpy.nditer code>?
@ user2309803 J'ai passé un peu de temps à expérimenter avec nditer code>. Je l'ai évité à cause de la longueur de la documentation :-) La solution semble maladroite que l'une des autres, mais pour que les données ici ont été très légèrement plus lentes que sa boucle explicite. Je ne suis pas sûr qu'il y ait des gains de
nditer code> dans ce contexte. J'ai peut-être manqué quelque chose dans ma mise en œuvre.
@Tis Chris: J'ai réussi à ré-implémenter votre solution à l'aide de NP.NDiter (T [0], Flags = ['Multi_index']) Code> Mais il était de 10% plus lent.
@ user2309803: Pouvez-vous poster comme solution. Je n'ai jamais vraiment essayé de comprendre nditer code> ou trouvé un problème que je pensais que cela aiderait. Ce serait intéressant de voir.
Comme demandé par @tis chris, voici une solution utilisant np.nditer code> avec le drapeau
multi_index code> mais je préfère le
explicite
pour code> pour code> Méthode des boucles ci-dessus car il est 10% plus rapide
Merci. J'ai une idée plus claire comment cela fonctionne maintenant. J'ai du code qui effectue l'interpolation le long de tout axe choisi de la matrice source. Je me demande si NDiter peut accélérer ou le rendre plus clair,