通过提供 rowIndices 列表从矩阵中获取行
Get rows from a matrix by providing a list of rowIndices
我是 xtensor
的初学者,我目前正在寻找从数组列表中获取行的方法。
我有以下矩阵。
auto matrix = {{ 0., 1., 0., 1., 1., 1., 1.},
{ 1., 2., 0., 1., 3., 1., 1.},
{ 2., 3., 0., 2., 7., 0., 0.},
{ 3., 4., 0., 1., 11., 0., 1.},
{ 4., 0., 1., 1., 0., 0., 0.}}
从这个矩阵中,我想 select 以下行。
xt::xarray<int> rowIndices = { 1, 2, 3, 4 }
现在我想使用这个 rowIndices
数组来获取包含所有行的子矩阵。我怎样才能做到这一点?
我尝试了以下方法。
xt::view(matrix, rowIndices, xt::all())
但这行不通。
您需要使用xt::keep(...)
按索引选择行。
完整示例:
#include <xtensor/xtensor.hpp>
#include <xtensor/xview.hpp>
#include <xtensor/xio.hpp>
int main()
{
xt::xtensor<double,2> a =
{{ 0., 1., 0., 1., 1., 1., 1.},
{ 1., 2., 0., 1., 3., 1., 1.},
{ 2., 3., 0., 2., 7., 0., 0.},
{ 3., 4., 0., 1., 11., 0., 1.},
{ 4., 0., 1., 1., 0., 0., 0.}};
xt::xtensor<size_t,1> rowIndices = { 1, 2, 3, 4 };
auto v = xt::view(a, xt::keep(rowIndices), xt::all());
std::cout << v << std::endl;
return 0;
}
打印:
{{ 1., 2., 0., 1., 3., 1., 1.},
{ 2., 3., 0., 2., 7., 0., 0.},
{ 3., 4., 0., 1., 11., 0., 1.},
{ 4., 0., 1., 1., 0., 0., 0.}}
请注意,根据documentation,您还可以使用xt::range(...)
、xt::all()
、xt::newaxis()
、xt::keep(...)
和xt::drop(...)
.
我是 xtensor
的初学者,我目前正在寻找从数组列表中获取行的方法。
我有以下矩阵。
auto matrix = {{ 0., 1., 0., 1., 1., 1., 1.},
{ 1., 2., 0., 1., 3., 1., 1.},
{ 2., 3., 0., 2., 7., 0., 0.},
{ 3., 4., 0., 1., 11., 0., 1.},
{ 4., 0., 1., 1., 0., 0., 0.}}
从这个矩阵中,我想 select 以下行。
xt::xarray<int> rowIndices = { 1, 2, 3, 4 }
现在我想使用这个 rowIndices
数组来获取包含所有行的子矩阵。我怎样才能做到这一点?
我尝试了以下方法。
xt::view(matrix, rowIndices, xt::all())
但这行不通。
您需要使用xt::keep(...)
按索引选择行。
完整示例:
#include <xtensor/xtensor.hpp>
#include <xtensor/xview.hpp>
#include <xtensor/xio.hpp>
int main()
{
xt::xtensor<double,2> a =
{{ 0., 1., 0., 1., 1., 1., 1.},
{ 1., 2., 0., 1., 3., 1., 1.},
{ 2., 3., 0., 2., 7., 0., 0.},
{ 3., 4., 0., 1., 11., 0., 1.},
{ 4., 0., 1., 1., 0., 0., 0.}};
xt::xtensor<size_t,1> rowIndices = { 1, 2, 3, 4 };
auto v = xt::view(a, xt::keep(rowIndices), xt::all());
std::cout << v << std::endl;
return 0;
}
打印:
{{ 1., 2., 0., 1., 3., 1., 1.},
{ 2., 3., 0., 2., 7., 0., 0.},
{ 3., 4., 0., 1., 11., 0., 1.},
{ 4., 0., 1., 1., 0., 0., 0.}}
请注意,根据documentation,您还可以使用xt::range(...)
、xt::all()
、xt::newaxis()
、xt::keep(...)
和xt::drop(...)
.