假设我有一个长度为 N 的数据 numpy 数组和一个长度为 N 的位掩码数组。
data = [1,2,3,4,5,6,7,8,9,0]
mask = [0,1,0,1,0,1,0,1,0,1]
Run Code Online (Sandbox Code Playgroud)
是否有一种无循环的 numpy 方法来创建基于数据的新数组,这样当且仅当 mask[i] != 0 时它才获取所有数据条目?就像这样:
func(data, mask) = [2,4,6,8,0]
Run Code Online (Sandbox Code Playgroud)
或者等效地用循环表示法:
ans = []
for idx in range(mask):
if mask[idx]:
ans.append(data[idx])
ans = numpy.array(ans)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在尝试为 Eigen::Matrix 创建一个包装类。它应该接收一个指向静态大小特征向量(1 行矩阵)的指针,并且应该在调用 getValue() 函数时返回一个副本。这是我目前拥有的
template<std::size_t N>
class InputV
{
public:
InputV(const Eigen::Matrix<double, N, 1>* in) : in_(in)
{
}
Eigen::Matrix<double, N, 1>
getValue() const
{
return *in_;
}
private:
const Eigen::Matrix<double, N, 1>* in_;
};
TEST_CASE("dummy")
{
Eigen::Matrix<double, 10, 1> a;
InputV<10> in(&a);
}
Run Code Online (Sandbox Code Playgroud)
但是,我需要两次明确地告诉它大小,一次是在源指针初始化期间,第二次是在创建 InputV 包装类时。有没有办法让 InputV 推断大小 N,所以我不必指定它两次?
谢谢!