multidimensional-array - 如何从视图中有效地克隆 Rust ndarray?
问题描述
我创建了 2D ndarray 的 1D 行视图,我想克隆内容。目前,我正在这样做:
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
解决方案
我想克隆内容。
如果是这种情况,那么您不想只克隆数组视图(这只是一个浅拷贝)。您想要一个与另一个数组具有相同内容的唯一拥有的数组。这可以用to_owned
.
let row_orig = table.subview(Axis(0), chosen_row);
let row_copy = row_orig.to_owned();
推荐阅读
- java - Springcloud多数据源@RefreshScope报错
- python - 如果阻塞程序将无法进入
- css - 外部 CSS 在 Safari 中运行良好,但在 Firefox、Google Chrome 或 Opera 中无法运行
- node.js - nodejs中单击事件的Ajax调用问题
- go - Go dep 无法解析“golang.org/x/crypto”
- c++ - 在运行“n=n++”时,它会输出“n”的原始值
- javascript - 图表正在被削减。我究竟做错了什么?
- c# - 如何通过数据库上下文向模型添加属性?
- php - 绑定在钩子上的辅助函数返回 http 错误 500
- facebook - Facebook“publish_actions”权限