Задать вопрос
@minamisa

Как исправить код?

Вот сама задача: В программе создайте массив размером (10, 10) с типом данных np.int 8 и запишите в переменную arr. Получите массив с внутренним отступом заполненном нулями. Сверху отступ в одну строку, снизу три строки, справа две, а слева четыре.
Результат запишите в переменную new_arr. Вывод должен быть такой как на картинке.
Вот мой код
ошибка:could not broadcast input array from shape (10,10) into shape (6,4)
помогите, пожалуйста
ИСПОЛЬЗУЯ ТОЛЬКО СРЕЗЫ6696afd1a71eb151520804.png
</: 
import numpy as np  

arr = np.ones((10,10), dtype = np.int 8)  
arr1 = np.zeros((10,10), dtype = np.int 8)  
new_arr = arr[1:-3, 4:-2] = arr1 
print(new_arr) code>
  • Вопрос задан
  • 109 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
Ты пытаешься делать выборку среза с заполнением. new_arr = arr[1:-3, 4:-2] = arr1 глупость, это так не работает.

arr = np.ones((10,10), dtype = np.int8)  
new_arr = arr.copy()
new_arr[0, :] = 0                   
new_arr[:, :4] = 0                  
new_arr[:, -2:] = 0                 
new_arr[-3:, :] = 0                 
print(new_arr)
Или если хочешь короче я исходил из твоего кода, то можно вот так.
new_arr = np.zeros((10, 10))
new_arr[1:7, 4:-2] = 1
Так короче, и правильнее но мы не много нарушаем условие задачи. Мы заполняем единицами выбранный срез.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы