Я создал одномерное представление строки 2D-массива ndarray и хотел бы клонировать его содержимое. Сейчас делаю так:
let mut row_orig = table.subview_mut(Axis(0), chosen_row);
// ...
// some operations on row_orig
// ...
let mut row_copy = Array1<f32>::zeros(table.cols());
row_copy.assign(&row_orig);
Кажется немного неэффективным создавать и инициализировать нулями, а затем
выполнить копию. Кроме того, я должен объявить row_copy изменяемым, когда в этом нет необходимости. Есть ли способ лучше? Очевидно, .clone не существует для представлений ndarray.
Я думал, что использование среза может быть решением, но я столкнулся с изменчивой / неизменной проблемой с этим кодом:
let row_copy = table.slice(s![chosen_row,..]).clone();
// do something mutable with table





I'd like to clone the contents.
Если это так, то вам не нужно просто клонировать представление массива (которое было бы лишь мелкой копией). Вам нужен уникальный массив с тем же содержимым, что и другой массив. Это можно сделать с помощью to_owned.
let row_orig = table.subview(Axis(0), chosen_row);
let row_copy = row_orig.to_owned();
tableиchosen_row.