将数组分配给更高维的数组

Assigning an array to a higher dimensional array

这与 非常相似/相关。

我或多或少遇到了同样的问题,想知道是否有更好的方法可以解决?最后,标记为正确的答案最后仍然需要按元素分配,并且没有真正提供将整个数组一次分配给给定轴的选项。

例如,在 numpy-python 中,我可以按照

的方式做一些事情
x = np.zeros((2,2))
x[0] = np.ones(2)
print(x)

在 运行 之后 return

 [[ 1.  1.]
 [ 0.  0.]]

现在在 xtensor 中,我想做一些类似的事情,即沿特定轴分配整个数组。我试过的是

xt::xarray<double> x = xt::zeros<double>({2,2});
x(0) = xt::ones<double>({2});

但这不起作用-本质上这与 OP 是同一个问题。现在建议的解决方案是

xt::xarray<double> x = xt::zeros<double>({2,2});
for(int =0; i < 2;i++){
x(0,i) = 1;
}

这给出了正确的结果 - 然而,这仍然需要我遍历孔轴而不是直接将数组分配给整个东西。将此与

进行比较
xt::xarray<double> x;
x = xt::zeros<double>({2})

如果我有一个一维数组,它允许我一次分配整个数组。在高维结构中沿给定轴分配数组是否有任何等效项?

您可以使用视图来实现您想要的:

xt::xarray<double> x = xt::zeros<double>({2,2});
xt::view(x, 0) = xt::ones<double>({2});

有关详细信息,请参阅 view's documentation