【问题标题】:Xtensor append values to bottom of tensor?Xtensor 将值附加到张量的底部?
【发布时间】:2020-06-20 17:45:21
【问题描述】:

假设我试图将值的张量向上移动(不是按位)n,然后在底部添加 NaN 以填充移位偏移量。

int n = 2;

  1. 原版 {{ 1., 2., 3., 4. } }
xt::xtensor_fixed<float, xt::xshape<1, 4>, xt::layout_type::column_major> original = {{ 1., 2., 3., 4. } };
  1. 值保持跟随n {{3., 4. } }
auto shiftvalues = xt::view(original, xt::all(), xt::range(n, original.size()));
  1. 插入 nan 以匹配原始大小 {{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?

谢谢

【问题讨论】:

    标签: c++ vector nan xtensor


    【解决方案1】:

    没想到

    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.}}

    我想这是一种解决方法,传统方式没有附加值。

    1. 创建具有指定偏移大小的形状n
    2. 将形状放入温度张量。用选择的值填充 temp 张量。
    3. 切片原始张量以保留您想要的值。
    4. 连接 3 和 2 以获得所需的结果

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      • 2012-04-11
      相关资源
      最近更新 更多