Это очень похоже / связано с Назначение в многомерных массивах Xtensor .
У меня более или менее та же проблема, и мне интересно, есть ли что-нибудь лучшее, что можно сделать?В конце ответ, помеченный как правильный, все еще требует поэлементного присваивания в конце и не дает возможности назначить целый массив сразу данной оси.
В качестве примера, в numpy-python я мог бы сделать что-то вроде
x = np.zeros((2,2))
x[0] = np.ones(2)
print(x)
, что при запуске вернуло бы
[[ 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})
, который позволяет мне назначать целый массив сразу, если у меня есть одномерный массив.Есть ли какой-либо эквивалент этого для назначения массива вдоль данной оси в структурах с более высокими размерами?