Взять побочную диагональ массива
#Как взять побочную (противоположную) диагональ массива? Требуется изменить обе диагонали массива на единицы
my_array = np.zeros((7, 7))
d = np.diag_indices(7)
my_array[d] = 1
[[1. 0. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0. 0.]
[0. 0. 0. 1. 0. 0. 0.]
[0. 0. 0. 0. 1. 0. 0.]
[0. 0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 0. 0. 1.]]
Ответы (2 шт):
Автор решения: 4500zenja
→ Ссылка
Если массив состоит только из нулей, а не каких либо других значений, то можно сделать следующими тремя способами:
- При помощи функции
np.fliplr(), позволяющей перевернуть массив относительно оси X и представить главную диагональ как побочную и наоборот; - При помощи
np.flip(my_array, axis=1), по сути делающая то же самое при помощи аргументов; - При помощи срезов:
my_array[:,::-1]— это если забавы ради :)
import numpy as np
my_array = np.zeros((7, 7))
d = np.diag_indices(7)
my_array[d] = 1
np.fliplr(my_array)[d] = 1
# my_array[:,::-1][d] = 1
# np.flip(my_array, axis=1)[d] = 1
print(my_array)
Если говорить про общие решения, то могу предложить, например, развернуть второй член кортежа:
import numpy as np
my_array = np.zeros((7, 7))
d = np.diag_indices(7)
my_array[d] = 1
d = d[0], d[1][::-1]
my_array[d] = 1
print(my_array)
Автор решения: passant
→ Ссылка
Ну вы перед тем как вопрос задавать - прочитайте этот форум ну хоть бы за три предыдущих дня. Вот ваша задача и ваш ответ: