@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>
  • Вопрос задан
  • 108 просмотров
Решения вопроса 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
Так короче, и правильнее но мы не много нарушаем условие задачи. Мы заполняем единицами выбранный срез.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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