Как можно изменить матрицу в Джулии?

Не могли бы вы мне помочь? у меня такая матрица

> rout
4×5 Array{Int64,2}:
 0  1  4  0  2
 0  3  0  1  2
 0  2  4  0  3
 0  1  4  2  3

каждая строка этой матрицы имеет несколько секций. например, первая строка состоит из двух секций. первый раздел включает 1,4, а второй раздел включает 2, а в последней строке есть один раздел 1,2,3,4. Я хочу получить матрицу, в которой количество секций в каждой строке является значением другой матрицы (nrout[i,j]). для матрицы перед rout можно сделать это nrout: (столбцы nrout равны 1,2,3,4)

> nrout
4×4 Array{Int64,2}:
 1  2  0  1
 2  2  1  0
 0  1  2  1
 1  1  1  1

вместо 1 в rout мест 1 (номер секции 1) в nrout. вместо 4 помещает 1 (номер раздела 1) в nrout. вместо 2 помещает 2 (номер раздела 2) в nrout.

не могли бы вы помочь мне, как эту матрицу можно сделать в Джулии?

Тег "прыжок" я убрал, так как это не конкретно про ПРЫЖОК (если не объясните, почему именно). Кроме того, мне непонятно, о чем вы спрашиваете; Можете ли вы объяснить немного больше, как другие строки nrout связаны с rout? Тогда бы у нас было больше примеров.

phipsgabler 11.06.2019 09:46

Спасибо. Узлы, появившиеся в rout {1,2,3,4}, составляют столбцы nrout соответственно.

Soma 11.06.2019 12:24
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
2
646
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я бы использовал цикл для этой проблемы:

function getnrout(rout)
    # assume we have at least one 0 in each row in column 1
    nrout = zeros(Int, size(rout, 1), size(rout, 2) - 1)
    for i in axes(rout, 1)
        section = 0
        for j in axes(rout, 2)
            v = rout[i,j]
            if v == 0
                section += 1
            else
                nrout[i, v] = section
            end
        end
    end
    return nrout
end

Я очень благодарен. но когда код был запущен. У него была эта ошибка. Я использовал Int(axes(rout,1), чтобы решить эту проблему, но это не сработало. Ошибка MethodError: no method matching start(::AxisArrays.Axis{:row,Base.OneTo{Int64}})[0m Closest candidates are: start([91m::SimpleVector[39m) at essentials.jl:258 start([91m::Base.MethodList[39m) at reflection.jl:560 start([91m::ExponentialBackOff[39m) at error.jl:107

Soma 11.06.2019 13:53

кроме того, using AxisArrays используется, потому что оси не были известны. Это проблема?

Soma 11.06.2019 14:23

Если у вас нет axes, возможно, вы используете более старую версию Julia, чем Bogumił. Я думаю, что это было indices раньше.

phipsgabler 11.06.2019 14:48

да. Теперь это сработало. подскажите пожалуйста какую версию юлии лучше поставить что бы в ней не было багов? Большое спасибо.

Soma 11.06.2019 15:10

Я бы рекомендовал использовать Юлию 1.1. Конечно, лучше не использовать Julia 0.6 или более ранние версии, так как они не поддерживаются. вместо axes(rout, 2) вы также можете написать 1:size(rout, 2) - это то же самое в обычных случаях (если вы не используете матрицы с нестандартными осями).

Bogumił Kamiński 11.06.2019 16:43

Другие вопросы по теме