У меня огромная матрица, и я хочу отсортировать столбцы на месте для повышения скорости / эффективности памяти.Можно ли использовать сортировку по месту для столбцов матрицы в Юлии?В качестве примера возьмем следующую матрицу:
julia> M=Matrix{Int}(3,3);
julia> for i = 1:size(M)[1]
for j = 1:size(M)[2]
M[i,j]=3*(j-1)+i
end
end
julia> M
3×3 Array{Int64,2}:
1 4 7
2 5 8
3 6 9
Я хочу использовать сортировку по месту для столбцов, чтобы получить матрицу
3×3 Array{Int64,2}:
3 6 9
2 5 8
1 4 7
Это можно получить без сортировка на месте следующим образом:
julia> M_sorted=Matrix{Int}(3,3);
julia> for j = 1:size(M)[2]
M_sorted[:,j]=sort(M[:,j],rev=true)
end
julia> M_sorted
3×3 Array{Int64,2}:
3 6 9
2 5 8
1 4 7
Но что-то подобное не получается (здесь только для одного столбца):
julia> sort!(M[:,1],rev=true)
3-element Array{Int64,1}:
3
2
1
julia> M
3×3 Array{Int64,2}:
1 4 7
2 5 8
3 6 9
Есть ли способ использовать на местесортировать в этом случае?Обратите внимание, что с индексированием проблем нет, поскольку матрица сохраняется в памяти по столбцам:
julia> M[1:end]
9-element Array{Int64,1}:
1
2
3
4
5
6
7
8
9
Так что я думаю, что это должно быть возможно.