Итак, у меня есть массив A размеров (8760,12). В основном все часы 12 лет. Мне нужно сортировать каждый месяц (730 часов) в каждом году в массиве. Я не нашел способа сделать это внутри массива. Поэтому мое решение заключалось в том, чтобы убирать каждый месяц, сортировать его, а затем снова создавать весь 2d-массив. Я думал о том, чтобы сделать что-то в соответствии с тем, что у меня ниже, но это не работает.
total=np.zeroes([8760,12])
for j in range(1,12):
for i in range (1,12):
#here i take out every month of every year
month=A[730*(i-1):-730*(12-i),(j-1):-(12-j)]
#here I sort the data
month_sorted=np.sort(month,axis=0,kind='quicksort')
#here I try to add the sorted months back into 1 big array
np.concatenate(total,month_sorted,axis=0)
np.concatenate(total,month_sorted,axis=1)
Конкатенация не работает с массивами разных размеров.
И у меня нет способа поместить месяц 2 в строку 2 моего массива. Я думаю, это должно быть сделано с индексированием idx или iloc или что-то в этом роде.
EDIT:
Мои значения целые.
Результатом должны быть значения, упорядоченные от низкого до высокого для каждых 730 (часов в месяц) значений в строке. Итак, представьте, что у меня будет 3 года вместо 12 и 9 часов вместо 8760 часов, которые нужно сортировать каждые 3 часа вместо каждых 730 часов. Массив выглядит так:
[[30,40,10,20,50,60,80,200,100]
[8,20,5,6,8,1,5,3,2]
[520,840,600,525,430,20,1,506,703]]
И должен быть преобразован в:
[[10,30,40,20,50,60,80,100,200]
[5,8,20,1,6,8,2,3,5]
[520,600,840,20,430,525,1,506,703]]
Итак, мой текущий код вынул первую часть 30,40,10 и отсортировал ее как 10,30,40. Но часть, которую я не могу решить, это как снова создать большой массив из всех меньших в 2 циклах.