小编Ric*_*Nai的帖子

Python基于掩码数组过滤numpy数组

假设我有一个长度为 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)

谢谢!

python arrays numpy

3
推荐指数
1
解决办法
7480
查看次数

C++ 特征向量在类的编译时推断向量大小

我正在尝试为 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,所以我不必指定它两次?

谢谢!

c++ templates eigen

2
推荐指数
1
解决办法
141
查看次数

标签 统计

arrays ×1

c++ ×1

eigen ×1

numpy ×1

python ×1

templates ×1