0
votes

Comment créer un tableau 2D du calcul d'une formule en utilisant deux tableaux comme entrée?

J'essaie de calculer combien d'heures de soleil chaque latitude de la terre reçoit chaque année. J'ai une formule qui calcule cela, qui utilise deux tableaux comme entrée, le jour de l'année et la latitude. Ce que je veux faire, c'est utiliser la formule pour créer un tableau 2D à chaque jour sur un axe et chaque latitude d'une autre, mais je ne suis pas sûr de la faire car ma formule ne retournera que le produit DOT des deux matrices plutôt que que le produit croisé, ne résultant que d'un seul axe. Mon code regarde quelque chose comme ceci: xxx

Qu'est-ce que je peux alors calculer la formule "Daylight", mais pour créer un tableau 2D résultant de sorte que chaque valeur de P soit multipliée par chaque valeur de Latitude, créant une matrice 90x365.


0 commentaires

3 Réponses :


1
votes

Essayez Numpy.MeshGrid . Cela créera deux matrices 2D pour la latitude et les jours pour vous:

lat2d, days2d = np.meshgrid(Latitude, Days)


0 commentaires

1
votes

en python, vous pouvez créer des tableaux comme celui-ci: xxx

et vous pouvez également mettre plusieurs de ceux-ci les uns à l'autre: xxx

Et bien sûr, ici, vous pouvez insérer votre formule: xxx

Ce résultat contient beaucoup de valeurs nan . Du contexte, je suppose que ce sont des nuits / jours polaires. Vous pourriez peut-être faire une sorte de np.arccos (min (1, max (-1, ...)) pour prendre soin de ceux-ci.


2 commentaires

Merci beaucoup, cela a beaucoup aidé! Vous êtes correct qu'il y aura des jours aux pôles qui n'ont pas de lumière du soleil, mais je peux les mettre à zéro plus tard.


Notez que cela utilise des boucles dans Python, qui sont généralement beaucoup plus lentes que les fonctions vectorisées intégrées que les offres engendrées, de sorte que la solution que j'ai proposée devrait être plus rapide.



1
votes

S'il s'agit de la déclaration de problème de base:

Qu'est-ce que je peux alors calculer la formule "Daylight" mais pour créer un tableau 2D résultant de sorte que chaque valeur de P soit multipliée par chaque valeur de latitude, créant une matrice 90x365.

Ensuite, faites simplement le produit extérieur des deux tableaux, de votre formule, xxx

np.outer utilisé dans Ce formulaire multipliera chaque élément de la première matrice (taille m ) avec chaque élément de la seconde (taille n ), donnant un tableau mxn .
Lire le Docs .

après Vous avez créé plat , la matrice de produit externe, ajoutez / multipliez-la avec les autres scalaires.


0 commentaires