Я использую структуру DMatrix
для выделения матриц динамического размера, где я многократно перезаписываю каждый столбец нормализованным вектором столбца, используя L2-норму.
// a is some DMatrix of arbitrary size
let col_0 = a.column(0);
let norm_of_col_0 = col_0.normalize();
Вместо того, чтобы зацикливаться на каждой ячейке в текущем столбце:
let row = a.shape().0;
let col = a.shape().1;
for col in 0..ncols {
let norm_of_col = a.column(col).normalize();
for row in 0..nrows {
*a.index_mut((row, col)) = norm_of_col()[row];
}
}
Я бы хотел перезаписать столбец его нормализованной версией.Код должен семантически выглядеть примерно так:
*a.index_mut((_, col)) = norm_of_col();
, где (_, col)
означает, что я выбираю столбец col
, а _
означает всю строку.
В общем,Есть ли способ перезаписать строку или столбец новой строкой или столбцом того же размера и типа данных?Методы как insert_columns
только добавляют столбцы в существующую матрицу.
Если это так, то в вычислительном отношении это выполняется быстрее или я должен просто написать вспомогательный метод, который перебирает каждую ячейку для обновления матрицы?