Я думаю, что у вас есть неправильное представление в этом термине "маскированные представления", и вы должны (пере) прочитать Книгу (теперь свободно загружаемую), чтобы прояснить ваше понимание.
Цитирую из раздела 3.4.2:
Расширенный выбор срабатывает, когда
объект выбора, obj, является
объект последовательности не кортежа, ndarray
(с типом данных integer или bool) или
кортеж хотя бы с одной последовательностью
объект или ndarray (типа данных
целое число или bool). Есть два типа
расширенной индексации: целое число и
Boolean. Расширенный выбор всегда
возвращает копию данных (контраст
с базовой нарезкой, которая возвращает
вид).
То, что вы делаете здесь, это расширенный выбор (логического типа), так что вы получаете копию и нигде не привязываете ее - вы вносите изменения в копию, а затем просто отпускаете ее, а затем пишете новая свежая копия с оригинала.
Как только вы поймете проблему, решение должно быть простым: сделайте свою копию один раз, внесите изменения в эту копию и напишите ту же самую копию. I.e.:
dat = mlab.csv2rec(args[0], delimiter=' ')
m_Obsr = dat.is_observed == 1
m_ZeroScale = dat[m_Obsr].scale_mean < 0.01
the_copy = dat[m_Obsr][m_ZeroScale]
for d in the_copy:
d.scale_mean = 1.0
newFile = args[0] + ".no-zero-scale"
mlab.rec2csv(the_copy, newFile, delimiter=' ')