簡體   English   中英

Xtensor 將值附加到張量的底部?

[英]Xtensor append values to bottom of tensor?

假設我試圖將值的張量(不是按位)向上移動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. 插入 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., 南., 南.}}

我想這是一種解決方法,沒有以傳統方式附加值。

  1. 創建具有指定偏移大小n的形狀
  2. 將形狀放入溫度張量中。 用選擇的值填充臨時張量。
  3. 切片原始張量以保留您想要的值。
  4. 連接 3 和 2 以獲得所需的結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM