Я хочу присвоить матрице N длинных значений для N записей в столбце гораздо более длинной матрицы, где логическая маска выбирает N записей. Я делаю это неправильно, потому что большая матрица остается неизменной. Пожалуйста, смотрите следующий пример:
Каждая запись в большой матрице содержит метку времени, действительный флаг и пустое поле, которое будет заполнено временем, прошедшим с момента предыдущей действительной записи. Я хочу вычислить эти промежутки времени:
a = np.array([(0,0,0),
(1,0,0),
(2,1,0),
(3,1,0),
(4,1,0),
(5,0,0),
(6,0,0),
(7,0,0),
(8,1,0),
(9,1,0)],
dtype=np.dtype([('time', '<i4'), ('ena', '|b1'), ('elapsed', '<i4')]))
Чтобы рассчитать разницу во времени с предыдущими немаскированными записями:
elapsed = a[a['ena']]['timestamp'][1:] - a[a['ena']]['timestamp'][0:-1]
истекло будет [1,1,4,1], (что я и хотел).
Теперь я хочу записать прошедшие секунды в исходный массив:
a[a['ena']]['step_secs'][1:] = timestep
нет предупреждения или ошибки, но a остается неизменным, хотя я ожидал:
a = np.array([
(0,0,0),
(1,0,0),
(2,1,0),
(3,1,1),
(4,1,1),
(5,0,0),
(6,0,0),
(7,0,0),
(8,1,4),
(9,1,1)]
Как мне это сделать? Большое спасибо.