是否可以直接从 xtensor 展平视图?就像是:
xt::xarray<double> arr3d = xt::linspace<double>(1.0, 21970.0, 21970);
arr3d.reshape({13, 13, 130});
xt::xtensor<double, 3> data = arr3d;
xt::xtensor<double, 3> data_view = xt::view(data, xt::range(9, 12),xt::range(9, 12),xt::range(9, 12));
xt::xtensor<double, 1> flat_data = xt::flatten(data_view);
如果我尝试直接展平视图,结果会有所不同。
xt::xtensor<double, 1> flat_data = xt::flatten(xt::view(data, xt::range(9, 12),xt::range(9, 12),xt::range(9, 12)));
我正在考虑直接扁平化,以获得更干净和优化的代码。有没有办法做到这一点?或者我应该在展平之前将视图复制到辅助变量?
Obs.: flattening directly outputs (wrong answer):
16390, 16391, 16392, 16393, 16394, 16395, 16396, 16397, 16398, 16399, 16400, 16401, 16402, 16403, 16404, 16405, 16406, 16407, 16408, 16409 , 16410, 16411, 16412, 16413, 16414, 16415, 16416。
在展平输出之前复制我需要的内容(内核窗口):16390、16391、16392、16520、16521、16522、16650、16651、16652、18080、18081、18082、18210、18211、2、1912、78344、18212、18334 , 19771, 19772, 19900, 19901, 19902, 20030, 20031, 20032