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: 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. P> p>
3 Réponses :
Essayez Numpy.MeshGrid . Cela créera deux matrices 2D pour la latitude et les jours pour vous:
lat2d, days2d = np.meshgrid(Latitude, Days)
en python, vous pouvez créer des tableaux comme celui-ci: et vous pouvez également mettre plusieurs de ceux-ci les uns à l'autre: p> Et bien sûr, ici, vous pouvez insérer votre formule: p> Ce résultat contient beaucoup de valeurs nan code>. 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, ...)) code> pour prendre soin de ceux-ci. P> p>
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.
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. P> blockquote>
Ensuite, faites simplement le produit extérieur des deux tableaux, de votre formule, P>
xxx pré>
np.outer code> utilisé dans Ce formulaire multipliera chaque élément de la première matrice (taille m em>) avec chaque élément de la seconde (taille n em>), donnant un tableau mxn em> .
Lire le Docs . P>après Vous avez créé
plat code>, la matrice de produit externe, ajoutez / multipliez-la avec les autres scalaires. P> P>