Итак, задание такое:
написать функцию, которая получает N (int больше 0) и возвращает 2-мерный массив единиц, где путь, равный 0, образует ромб. длина каждой ромбовидной линии (1 из 4 строк) имеет длину N. нельзя использовать компоновку списков циклов или рекурсию.
Я добавлю свое собственное решение, но я не думаю, что оно очень ориентировано на цифры.
Обратите внимание, что мое решение изначально было для ромба из 1 в матрице 0, поэтому оно может выглядеть немного странно.
пример:
n=1
np.array([[0]])
n=2:
np.array([[1,0,1],[0,1,0],[1,0,1]])
n=3
np.array([[1,1,0,1,1],[1,0,1,0,1],[0,1,1,1,0],[1,0,1,0,1],[1,1,0,1,1]])
Мое решение:
if n == 1:
finalMatrix = np.array([[0]])
return finalMatrix
rawMatrix = np.ones((2 * n - 1, 2 * n - 1))
midRowDiag = np.eye(2 * n - 1, k=n - 1)
midColDiag = np.eye(2 * n - 1, k=-(n - 1))
tempMatrix = rawMatrix - midRowDiag - midColDiag
halfMatrix = tempMatrix[::, n:]
# print(halfMatrix)
# Making the quarters
topRightQuart = halfMatrix[:n - 1, 0:n - 1]
topLeftQuart = np.fliplr(topRightQuart)
botLeftQuart = np.flipud(topLeftQuart)
botRightQuart = np.flipud(topRightQuart)
midCol = tempMatrix[:, n - 1]
midRow = tempMatrix[n - 1, :]
# Adding them all up
finalMatrix = np.zeros((2 * n - 1, 2 * n - 1))
finalMatrix[:, n - 1] += midCol
finalMatrix[n - 1, :] += midRow
finalMatrix[0:n - 1, 0:n - 1] += topLeftQuart
finalMatrix[0:n - 1, n:] += topRightQuart
finalMatrix[n:, 0:n - 1] += botLeftQuart
finalMatrix[n:, n:] += botRightQuart
finalMatrix[n - 1, n - 1] = 1
return finalMatrix
Подробнее здесь: https://stackoverflow.com/questions/726 ... trix-numpy
Создание ромба из 0 в матрице 1 - numpy ⇐ Python
Программы на Python
1766832148
Anonymous
Итак, задание такое:
написать функцию, которая получает N (int больше 0) и возвращает 2-мерный массив единиц, где путь, равный 0, образует ромб. длина каждой ромбовидной линии (1 из 4 строк) имеет длину N. нельзя использовать компоновку списков циклов или рекурсию.
Я добавлю свое собственное решение, но я не думаю, что оно очень ориентировано на цифры.
Обратите внимание, что мое решение изначально было для ромба из 1 в матрице 0, поэтому оно может выглядеть немного странно.
пример:
n=1
np.array([[0]])
n=2:
np.array([[1,0,1],[0,1,0],[1,0,1]])
n=3
np.array([[1,1,0,1,1],[1,0,1,0,1],[0,1,1,1,0],[1,0,1,0,1],[1,1,0,1,1]])
Мое решение:
if n == 1:
finalMatrix = np.array([[0]])
return finalMatrix
rawMatrix = np.ones((2 * n - 1, 2 * n - 1))
midRowDiag = np.eye(2 * n - 1, k=n - 1)
midColDiag = np.eye(2 * n - 1, k=-(n - 1))
tempMatrix = rawMatrix - midRowDiag - midColDiag
halfMatrix = tempMatrix[::, n:]
# print(halfMatrix)
# Making the quarters
topRightQuart = halfMatrix[:n - 1, 0:n - 1]
topLeftQuart = np.fliplr(topRightQuart)
botLeftQuart = np.flipud(topLeftQuart)
botRightQuart = np.flipud(topRightQuart)
midCol = tempMatrix[:, n - 1]
midRow = tempMatrix[n - 1, :]
# Adding them all up
finalMatrix = np.zeros((2 * n - 1, 2 * n - 1))
finalMatrix[:, n - 1] += midCol
finalMatrix[n - 1, :] += midRow
finalMatrix[0:n - 1, 0:n - 1] += topLeftQuart
finalMatrix[0:n - 1, n:] += topRightQuart
finalMatrix[n:, 0:n - 1] += botLeftQuart
finalMatrix[n:, n:] += botRightQuart
finalMatrix[n - 1, n - 1] = 1
return finalMatrix
Подробнее здесь: [url]https://stackoverflow.com/questions/72667331/making-a-diamond-of-0-in-a-1s-matrix-numpy[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия