type(something) == sometype
!gen = (x < 0 for x in some_list)
gen = [x < 0 for x in some_list]
то это уже генератор списка. Он сделает обычный список, каждый элемент которого рассчитан на основании x в some_list. Как следствие, все элементы будут сразу рассчитаны и сохранены в памяти, но зато итерироваться по этому списку можно будет сколько угодно раз.src[:,:,2]
red_channel = src[:,:,2]
Я в своем коде использую несколько функций
SELECT last_insert_rowid();
Открыл исходный файл, прочитал элемент из него. Если элемент "хороший", записал его в выходной файл.
Повторить пока исходный файл не кончится.
Или, если тебе так хочется, загрузи исходный файл в список, создай новый пустой список, и добавляй в этот новый список "хорошие" элементы исходного. Принцип один и тот же.