Xtensor 将值附加到张量的底部?
Xtensor append values to bottom of tensor?
假设我正在尝试将张量值向上移动(不是按位)n
,然后在底部添加 NaN 以填充偏移量。
int n = 2;
- 原始{{ 1., 2., 3., 4.}}
xt::xtensor_fixed<float, xt::xshape<1, 4>, xt::layout_type::column_major> original = {{ 1., 2., 3., 4. } };
- 值以保持跟随
n
{{3., 4. } } 的转变
auto shiftvalues = xt::view(original, xt::all(), xt::range(n, original.size()));
- 插入 nans 以匹配原始大小后 {{3., 4. , nan, nan} }
(?)shiftvalues.appendBottom(std::numeric_limits<double>::quiet_NaN());
(?)shiftvalues.appendBottom(std::numeric_limits<double>::quiet_NaN());
int n = 2;
xt::xtensor_fixed<float, xt::xshape<1, 4>, xt::layout_type::column_major> original = {{ 1., 2., 3., 4. } };
auto shiftvalues = xt::view(original, xt::all(), xt::range(n, original.size()));
我将如何在第 1 步和第 2 步之后将 NaN 值插入到张量中?我无法在文档中找到任何将值附加到张量底部的方法。
或者创建一个与 original
大小相同的张量,用 NaN 填充它,然后将适当索引处的值设置为 shiftvalues
会更好吗?
谢谢
没关系想通了
int n = 2;
xt::xtensor_fixed<float, xt::xshape<1, 4>, xt::layout_type::column_major> original = {{ 1., 2., 3., 4. } };
xt::xtensor<float, 2>::shape_type sh1 = {1, n};
auto offsetfill = xt::full_like(xt::empty<float>(sh1), std::numeric_limits<double>::quiet_NaN());
auto shiftvalues = xt::view(original, xt::all(), xt::range(n, original.size()));
auto result = xt::concatenate(xt::xtuple(shiftvalues, offsetfill), 1);
std::cout << result << std::endl;
{{ 3., 4., nan., nan.}}
我想这有点变通,没有以传统方式附加值。
- 创建具有指定偏移大小的形状
n
- 将形状放入温度张量中。用选择的值填充温度张量。
- 切片原始张量以保留您想要的值。
- 连接 3 和 2 以获得所需的结果
假设我正在尝试将张量值向上移动(不是按位)n
,然后在底部添加 NaN 以填充偏移量。
int n = 2;
- 原始{{ 1., 2., 3., 4.}}
xt::xtensor_fixed<float, xt::xshape<1, 4>, xt::layout_type::column_major> original = {{ 1., 2., 3., 4. } };
- 值以保持跟随
n
{{3., 4. } } 的转变
auto shiftvalues = xt::view(original, xt::all(), xt::range(n, original.size()));
- 插入 nans 以匹配原始大小后 {{3., 4. , nan, nan} }
(?)shiftvalues.appendBottom(std::numeric_limits<double>::quiet_NaN());
(?)shiftvalues.appendBottom(std::numeric_limits<double>::quiet_NaN());
int n = 2;
xt::xtensor_fixed<float, xt::xshape<1, 4>, xt::layout_type::column_major> original = {{ 1., 2., 3., 4. } };
auto shiftvalues = xt::view(original, xt::all(), xt::range(n, original.size()));
我将如何在第 1 步和第 2 步之后将 NaN 值插入到张量中?我无法在文档中找到任何将值附加到张量底部的方法。
或者创建一个与 original
大小相同的张量,用 NaN 填充它,然后将适当索引处的值设置为 shiftvalues
会更好吗?
谢谢
没关系想通了
int n = 2;
xt::xtensor_fixed<float, xt::xshape<1, 4>, xt::layout_type::column_major> original = {{ 1., 2., 3., 4. } };
xt::xtensor<float, 2>::shape_type sh1 = {1, n};
auto offsetfill = xt::full_like(xt::empty<float>(sh1), std::numeric_limits<double>::quiet_NaN());
auto shiftvalues = xt::view(original, xt::all(), xt::range(n, original.size()));
auto result = xt::concatenate(xt::xtuple(shiftvalues, offsetfill), 1);
std::cout << result << std::endl;
{{ 3., 4., nan., nan.}}
我想这有点变通,没有以传统方式附加值。
- 创建具有指定偏移大小的形状
n
- 将形状放入温度张量中。用选择的值填充温度张量。
- 切片原始张量以保留您想要的值。
- 连接 3 和 2 以获得所需的结果