只需点击 xtensor,我喜欢它,我会尝试从 vba(excel)中使用它。
为了保持这个“测试”简单,我打算只使用 double 矩阵,它们作为 LPSAFEARRAY 传递给 C/C++ dll。
使用数据指针和大小(行 x 列)。我认为这是
足够了,用于映射操作。
数据以 fortran(列优先)顺序传输。我没有找到
任何 2D 适配器,所以我的猜测是我必须转换上面的 1D
适配器:
a) reshape it, to (columns, rows)
b) transposed view of a)
以上是正确的,还是有更简单、更直接的方法?
这种访问数据的方法是否存在速度损失?
最佳答案
您可以通过调整函数将一维数组直接调整为具有所需布局的 N 维容器:
double* data = get_data_buffer();
auto adapter = xt::adapt<xt::layout_type::column_major>(data, {rows, columns});
见 adapt documentation更多细节。
关于excel - 如何从 vba 使用 xtensor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54822734/