Сам numpy не умеет обрабатывать изображения, строить связи между "нейронами" и вообще он больше для управления данными в массивах.
Но чисто теоретически возможно ли? Возможно. Как? Ну...
Для начала тебе нужно как-то получить массив пикселей. Тут зависит от контекста. Если картинку из файла брать, то есть старая добрая библиотека PIL для чтения изображений. Нет, конечно, можно и декодер написать, но не уверен, что оно тебе надо настолько "своё".
from PIL import Image
import numpy
img = Image.open('image.png')
pixel_map = np.array(img)
Это будет массив элементов строк, где каждый элемент строки представлен массивом [r, g, b] или [r, g, b, a] при наличии прозрачности.
# Например, изображение с такими пикселями
# [красный][зелёный]
# [синий] [белый]
# будет представлено массивом
[[[255, 0, 0], [0, 255, 0]], [[0, 0, 255], [255, 255, 255]]]
Стоит признать, что такой формат слабо подходит для обучения. Обычно изображения приводят к Ч/Б, сжимают по размерам и вот это вот всё. Сжатие, как и чтение, лучше делать через библиотеку PIL, она быстрее работает, чем чистый python (вроде, оно на С написано, но это не точно).
Для обучения обычно распаковывают двумерный массив пикселей (пиксель у нас был тоже массивом, но считаем это за единый объект, потому что могли его во что-то другое превратить) в одномерный. Например, пиксели последовательно положить из строк:
pixel_sequence = [pixel for row in pixel_map for pixel in row]
Важно. Если брать куски кода, у нас получится list[list[r, g, b (, a)]]. Это не то что бы подходит для сетей прямого распространения (могу напутать с терминологией, поправьте), можно ещё раз распаковать вложенный массив, конечно, но сложность из-за увеличения количества входных данных вырастет многократно
А дальше уже можно на чистом python'е писать логику для обработки значений из массива numpy. Есть хорошая статья на
proglib. Как результат, будет нейросеть "на numpy", хотя хватило бы и обычных питоновских листов