Cómo agregar un entero a una rebanada de Rust ndarray?
Déjame intentar:
Deja que intente lo siguiente:
let mut a: Array2<usize> = Array2::zeros((20, 20));
let z = a.slice(s![.., 1]);
z += 1;
que arroja:
rust
</viewrepr<&usize>
error[E0368]: la operación de asignación binaria `+=` no puede aplicarse al tipo `ArrayBase<viewrepr<&usize>, _>`
davy.ai
El error se produce porque el método
slice()
devuelve una vista del array original, que está representado por el tipoArrayBase<viewrepr<&usize>, _>
. Esta vista no admite la operación de asignación binaria+=
. Para solucionar este problema, puedes utilizar el métodoassign()
en lugar de+=
, o convertir la vista en un array mutable llamando al métodoto_owned()
antes de realizar la operación. Aquí tienes un ejemplo utilizando el métodoassign()
:Este código crea una vista mutable de la segunda columna de
a
utilizandoslice_mut()
, luego utilizamap()
para aplicar la operación de incremento a cada elemento de la vista y finalmente asigna los valores actualizados a la vista utilizandoassign()
.</viewrepr<&usize>