values = numpy.array(inp.data)
idx1 = numpy.where(values > -2.14)
idx2 = numpy.where(values < 2.0)
res1 = (values[idx1] - diff1)/1000
res2 = (values[idx2] - diff2)*1000
Python中的P>只是5行,但是C++中最简单的方法是很多嵌套循环。请告知。。在基本上,我的问题是关于数组/向量运算,如数组乘法、索引运算等。。在上面的例子中,res1是一个数组,包含从values数组中筛选出的一组元素以及随后应用的一些算法(所有选定元素的减法、乘法)。在这个python示例中,我没有复制values数组的元素,因为它在内存方面可能足够大,我只保留索引,并希望能够在原始数组的选定元素集上运行算术运算。在
我可以看到这项工作的最简单的方法是使用一个
std::set
的浮动(您的代码看起来像是假设数据是按升序排序的)。您也可以使用一个std::vector
的float,但您必须自己排序,可能是使用std::sort
。在在这种情况下,您的示例代码可能如下所示-集合假定值是唯一的,如果不是,则可以使用
std::multiset
请注意,上面的代码示例不是原始代码的100%转换-}找不到匹配的元素,它们将返回
lower_bound
给出了第一个等于或大于-2.14的元素。我也没有放入任何失败的检查代码—例如,lower_bound
或{values.end()
。在使用vector,示例看起来非常相似,只需多出一行即可对向量进行预排序:
^{pr2}$我建议你检查一下算法头。 也不要使用数组,你有std::vector或boost(即将成为std)::array。在
wikipedia article
Reference for all algorithms
你根本不应该使用数组。请坐下来学习std::vector类以及迭代器和标准库算法。我强烈建议你读这本书。在
相关问题 更多 >
编程相关推荐