Я пытаюсь реализовать алгоритм, содержащийся в этой статье здесь , и я добился значительного прогресса. Однако я не уверен, что статья подразумевает под этим отрывком:
В принципе, двумерная задача в (2) может быть сведена к одномерной задаче . Здесь векторы , и получены путем лексикографического упорядочения матриц , , .
Для справки, уравнение (2) имеет вид .
Также, согласно тексту, форма - это N1xN2, а - (N1 * N2x1). Однако я не совсем уверен, чего они хотят. Все это выходит за рамки моей компетенции. Ссылки, которые я нашел, рассматривают проблему с буквами, но с матрицей чисел, я должен рассмотреть каждое значение элемента или каждую позицию элемента (x, y)? Итак, будет:
m_r = np.sort(M_r, axis=None)[:, np.newaxis]
или m_r = M_r.reshape((N1*N2, 1))
?
Или мне придется использовать np.lexsort
, или np.ravel
, Mtil.flatten
?
Позже они также утверждают, что
Матрица затем оценивается путем переупорядочения в матричной записи.
Поэтому, если я использую сортировку, мне придется также получить индексы элементов перед сортировкой, чтобы их не сортировать. Оглядываясь вокруг, я увидел, что могу использовать двойное argsort
. Если бы мне нужно было только reshape
вернуть его назад, это было бы просто m_r.reshape((N1,N2))
.
В любом случае, я бы хотел, чтобы кто-нибудь дал мне несколько указаний на это. Что авторы имели в виду под этими отрывками?