Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 07.09.2021
Сообщений: 3
1

Numpy. Диагональ матрицы

19.09.2021, 18:22. Показов 3730. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, уважаемые форумчане!
Начал изучать Numpy, и возникли трудности с получением диагонали матрицы.
Есть двумерный массив:
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]
И мне нужно для каждой ячейки получить обе диагонали, в которых она состоит (например, для 11 - [3, 7, 11, 15] и [5, 11, 17, 23]).
Я знаю, что для первой строки можно использовать a.diagonal(), a diagonal(offset=1) и т.д. и для обратных диагоналей можно перевернуть массив с помощью функции np.fliplr(). А вот с последующими строками возникают проблемы. Я думал, что можно просто поднять строку с искомой ячейкой вверх, но это не работает. Например, для числа 11:
Python
1
2
a = np.arange(25).reshape(5, 5)
print(np.roll(a, -2, 0).diagonal(offset=1))
Получается [11 17 23 4] вместо [5, 11, 17, 23]. Подскажите, пожалуйста, что я делаю не так?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.09.2021, 18:22
Ответы с готовыми решениями:

Матрицы (без модуля NumPy)
В каждом столбце матрицы вещественных чисел P(k*m) заменить минимальный элемент суммой...

Возведение матрицы в степень без функции и numpy
Добрый день, нужна очень помощь с возведением матрицы в степень, при этом не используя numpy и def.

Numpy неправильно находит собственные векторы матрицы
Есть код. Он правильно находит собственные значения, но вектора строит неправильно. import numpy...

Рандомный ввод элементов матрицы с помощью библиотеки numpy
Реализуйте рандомный ввод элементов матрицы с помощью библиотеки numpy. Необходимо обработать...

2
Эксперт Python
8581 / 4410 / 1852
Регистрация: 27.03.2020
Сообщений: 7,226
19.09.2021, 19:44 2
Лучший ответ Сообщение было отмечено another_guy как решение

Решение

another_guy,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
import numpy as np
from math import ceil
n = 5
m = 10
arr = np.arange(n*m).reshape(n, m)
print(arr)
 
ind = np.vstack(np.where(arr == 11))
 
diag = np.diagonal(arr, offset = ind[1,0] - ind[0,0])
diag_flip = np.fliplr(arr).diagonal(offset = (m - 1) - (ind[1,0] + ind[0,0]))
 
print(diag, diag_flip)
1
0 / 0 / 0
Регистрация: 07.09.2021
Сообщений: 3
19.09.2021, 20:07  [ТС] 3
Благодарю, всё работает!
0
19.09.2021, 20:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2021, 20:07
Помогаю со студенческими работами здесь

Диагональ матрицы
Здравствуйте. Дана матрица X и два вектора одинаковой длины i и j. Написать функцию, которая...

Диагональ матрицы
есть матрица, к примеру: matrix1 = ,,] как в записать диагональ в список? diag = что то...

Как умножить 2 матрицы 3x3 по правилам математики без numpy
Здравствуйте, помогите пожалуйста с прогой, нужно умножить матрицу на матрицу без numpy (не...

Чтение матрицы из текстового файла в матрицу вещественных чисел numpy на Python
Добрый день! Нужна ваша помощь) Мне нужно прочитать текстовый файл состоящий из данных в таком виде...

Скопировать диагональ матрицы в одномерный массив
дана матрица 5х5(рандом). Диагональные элементы матрицы скопировать в другой одномерный массив.

Матрицы в NumPy
Есть матрицы А и В. Нужно все элементы каждой строки умножить на соответствующий элемент матрицы В....

numpy и матрицы
Задание на тему работы с массивами и пакетом numpy: 1) Создайте двумерный массив 4 х 5. 2)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru