C++ 特征张量广播语法
我有以下numpy代码:C++ 特征张量广播语法,c++,numpy,eigen,C++,Numpy,Eigen,我有以下numpy代码: # q.shape == (fxs, ks) # E.shape == (fxs, fxs) C = q[:, np.newaxis, :] * E[:, :, np.newaxis] * q[np.newaxis, :, :] # C.shape == (fxs, fxs, ks) 我正在Eigen中重新实现它 以下是我的想法: Eigen::Tensor<T, 3> C = q.reshape(Eigen::array<int
# q.shape == (fxs, ks)
# E.shape == (fxs, fxs)
C = q[:, np.newaxis, :] * E[:, :, np.newaxis] * q[np.newaxis, :, :]
# C.shape == (fxs, fxs, ks)
我正在Eigen中重新实现它
以下是我的想法:
Eigen::Tensor<T, 3> C =
q.reshape(Eigen::array<int, 3> {fxs, 1, ks}).broadcast(Eigen::array<int, 3> {1, fxs, 1})
* E.reshape(Eigen::array<int, 3> {fxs, fxs, 1 }).broadcast(Eigen::array<int, 3> {1, 1, ks})
* q.reshape(Eigen::array<int, 3> {1, fxs, ks}).broadcast(Eigen::array<int, 3> {fxs, 1, 1});
Eigen::张量C=
q、 重塑(特征::数组{fxs,1,ks})。广播(特征::数组{1,fxs,1})
*重塑(特征::数组{fxs,fxs,1})。广播(特征::数组{1,1,ks})
*重塑(本征::数组{1,fxs,ks})。广播(本征::数组{fxs,1,1});
但这似乎相当冗长。这是正确的翻译吗?< p>你可以试试xtSc+C++模板库,它支持动态和静态尺寸 xtensor有一个与numpy非常相似的API,包括矢量化、广播和通用函数。这里有一份numpy到xtensor的备忘单: 最后,你可以通过点击顶部的绑定徽章来尝试在C++的Juyter笔记本中进行直播。 xtensor还为科学计算的主要语言(R、Julia、Python)提供了绑定