#python #numpy
#python #numpy
Вопрос:
Я хочу ежегодно вычислять максимальную температуру, используя Numpy в Python. Я должен вычислять максимальную температуру с каждого года. Я могу рассчитать максимальную температуру для всех включенных данных, используя np.max(array) .
Но как мне рассчитать его за год?
Комментарии:
1. Можете ли вы показать образец своих данных, чтобы люди могли получить представление о столбцах и строках и их содержимом?
2. я новичок, поэтому у меня недостаточно репутации, чтобы дать ссылку на изображение. Но я отредактировал, чтобы показать формат базы данных ниже 🙂 спасибо
3. Не делайте этого в
numpy
, используйтеpandas
. У него даже естьfrom_excel
метод ввода (он не очень хорош, но тогда он более функционаленnumpy
)
Ответ №1:
Я бы предложил сделать это в pandas (предположим, что ваш массив назван x
):
df = pd.DataFrame(x, columns=['year', 'month', 'max_temp'])
max_temps_per_year = df.groupby('year')['max_temp'].max()
print(max_temps_per_year)
Если вам нужна чистая реализация numpy и предполагается, что ваш массив имеет имя x
, вы могли бы:
- сначала используйте логическое условие, чтобы выбрать только допустимые строки вашего массива:
cond = x[:, 0] == 1990 # cond is True/False based on if the year is 1990
sub = x[cond] # subset of x that has only the rows satisfying the condition
- затем вычислите максимальную температуру для подмножества
max_temp = sub[:, 2].max() # maximum temperature of year
Если вы выполняете эти шаги итеративно, вы должны получить максимальную температуру для каждого года:
years = np.unique(x[:, 0]) # find unique years
max_temps = [(x[:, 0] == year)[:, 2].max() for year in years] # same as above written as list comp
# print the results:
print('Year | Max temperature')
for year, temp in zip(years, max_temps):
print('{:^4} | {:^15}'.format(year, temp))
Ответ №2:
Это должно сработать..
#col index of the year field
y=0
#col index of the temperature field
t=2
#Taking unique Years
n=np.unique(arr[:,y])
#Taking max temp for each Year
x=[np.max(arr[arr[:,y]==i,t].astype(np.float)) for i in n]
maxarr=np.append(n,x).reshape(len(n),len(x))
print(maxarr)
Вывод
[['1990' '1991']
['25.0' '21.0']]