Вы устанавливаете значения для временного.
numrec[["col1", "col2"]]
возвращает копию массива.Это можно увидеть по флагу OWNDATA.
>>> numrec[["col1", "col2"]].flags["OWNDATA"]
True
Когда вы индексируете массив numpy со списком, numpy возвращает копию данных.Это должна быть копия, потому что, как правило, список может не разрешаться в обычном упорядоченном представлении базовых данных.(Это относится к любому массиву-пустышке, а не только к структурированным массивам.)
Сравнить
>>> numrec[["col1"]].flags["OWNDATA"]
True
>>> numrec["col1"].flags["OWNDATA"]
False
Кроме того, если массив-пустышка является представлением, базовый элемент содержит базовый массив.
>>> id(numrec["col1"].base) == id(numrec)
True