我有两个特征:VectorXd对象,A和B,具有相同的维数n。
我想创建一个新的向量C,以便:
由于应用程序对延迟敏感,我想避免复制A和B。
现在,我使用的是一个简单的for-循环,但是我想知道如何用一种智能(呃)的方式来实现这一点。
发布于 2017-10-30 11:49:43
尝试使用select
C = (B.array() == B.array()).select(B, A);否则,B==B将在非NaN和false的值中为真。对于真值,选择返回第一个矩阵,对于false返回第二个。
正如注意到的below by chtz,一种更紧凑的编写方法是:
C = B.array().isNaN().select(A, B);就性能而言,这不是矢量化的(至少上次我检查过),但没有引入A和B的副本。这可能与您编写的内容相同(据我所知,没有看到代码)。
https://stackoverflow.com/questions/47013849
复制相似问题