Я создал класс под названием localSun.Я взял упрощенную модель системы Земля-Солнце и попытался вычислить высотный угол Солнца для любого места на Земле в любое время.Когда я запускаю код для текущего времени и проверяю время и добавить, он хорошо совпадает.Так что это работает.
Но тогда я хотел в основном пройти через один год и сохранить все углы высоты в массиве (массив Numpy) для определенного местоположения, и я пошел с интервалами в 1 минуту.
Вот моя самая первая наивная попытка, которая, я уверен, не подходит для производительности.В любом случае, я просто хотел проверить производительность.
import numpy as np
from datetime import datetime
from datetime import date
from datetime import timedelta
...
...
altitudes = np.zeros(int(year/60))
m = datetime(2018, 5, 29, 15, 21, 0)
for i in range(0, len(altitudes)):
n = m + timedelta(minutes = i+1)
nn = localSun(30, 0, n)
altitudes[i] = nn.altitude() # .altitude() is a method in localSun
высоты - это массив, в котором я хочу сохранить все высоты, и его размер равен 525969, что в основном равно количеству минут в году.
Объект localSun () принимает 3 параметра: colatitude (30 град.), Долготу (0 град.) И объект datetime, который имеет время чуть более часа назад (когда это опубликовано)
Итак, вопрос в том, что было бы хорошим эффективным способом прохождения года с интервалом в 1 минуту и вычисления угла высоты в это время, потому что это кажется довольно медленным.Должен ли я использовать карту для обновления значений угла высоты вместо цикла for.Я предполагаю, что мне придется каждый раз создавать новый объект localSun тоже.Также, вероятно, плохо просто создавать эти переменные n и nn все время.
Мы можем предположить, что для объектов localSun все методы работают нормально.Я просто спрашиваю, как эффективно (если есть) пройти год с интервалом в 1 минуту и обновить массив с высотой.Код, который у меня есть, должен раскрыть достаточно информации.
Возможно, я бы хотел сделать это всего через 1 секунду, поэтому было бы здорово узнать, есть ли эффективный способ.Я попробовал это, но это займет очень много времени, если я использую этот код.
Этот фрагмент кода занял около минуты на университетском компьютере, который, насколько я знаю, довольно быстрый.
Очень ценен, если кто-то может ответить.Заранее спасибо!