mask并将numpy-where函数应用于c中的向量++

mklgxw1f  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(303)

我是c++的,我想把向量的掩蔽和搜索条件被验证的索引结合起来,类似于numpywhere函数。
我给你举个例子。我有这些向量:

std::<int> id          ={61, 66, 68, 80}
std::vector<int> val   ={0, 0, 2, 1};
std::vector<int> Offset={62, 65, 70};
std::vector<int> masked;

我首先要在脸上涂一层面膜 Offset 矢量:

masked=Offset[val];
``` `masked` 应该是这样的: `masked={62, 62, 70, 65}` 然后我想找到索引 `id` 向量分量大于 `masked` 向量分量(它们具有相同的长度),即与 `numpy.where()` 功能:

c=np.where(id>masked)[0]
``` c 是一个 vector<int> 应该是这样的: c={1,3} 有什么想法吗?谢谢您!

vngu2lb8

vngu2lb81#

你可以使用一个简单的循环。注意,您不需要中间数组 masked . 下面是一个(未经测试的)示例:

std::vector<int> c;
c.reserve(val.size());

for(size_t i=0 ; i<val.size() ; ++i)
    if(id[i] > Offset[val[i]])
        c.push_back(i);

相关问题