Как можно оптимизировать код с помощью библиотеки numpy?

Задан вектор x=1:3. Создать матрицу 3-го порядка, на диагоналях которой стояли бы элементы вектора. Если диагональ короче size(x), то заполнение начинать 1-го элемента вектора x.
def replace(diagonal, matrix):
        matrix[0][0] = diagonal[0]
        try:
            matrix[1][1] = diagonal[1]
        except IndexError:
            pass
        try:
            matrix[2][2] = diagonal[2]
        except IndexError:
            pass
 
        return matrix

Как еще можно решить эту задачу без использования циклов? Может быть есть более простой способ решения?
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ответы на вопрос 2
LaRN
@LaRN
Senior Developer
Вроде вот этой командой можно
numpy.diag(v), где v ваш вектор.
Подробности можно вот тут посмотреть
https://numpy.org/doc/stable/reference/generated/n...
Ответ написан
adugin
@adugin Куратор тега Python
Заполнение тремя последними элементами из вектора diagonal:
matrix[np.diag_indices_from(matrix)] = diagonal[-min(matrix.shape):]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы