Проблема в том, что в коде исходное изображение и массив numpy используют одну и ту же память. отсюда и ошибка только для чтения, когда вы пытаетесь обновить массив.
Создайте копию как исходный массив, и все будет в порядке.
Еще одна небольшая вещь, которую я заметил, это plt.imgshow ( image) используется вместо plt.imshow (image).
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
pic = Image.open('mountain1.jpg')
# copy of the numpy array so that the original image is not changed.
pic_array = np.asarray(pic).copy()
pic_array[:,:,2]=0
plt.imshow(pic_array)
Cheers!