问题描述
我有两个数组
double[] a = new double[] {1,2,3,4,5};
double[] b = new double[] {2,5};
我将其转换为两个向量:
Vector<double> A = Vector<double>.Build.DenSEOfArray(a);
Vector<double> B = Vector<double>.Build.DenSEOfArray(b);
我想比较 'A' 和 'B' 的值并返回一个向量,其中元素 2 和 3 (0,1,4) 被剪裁,因为它们大于 ' 中的等效值b' 例如:
[1,5]
谁能解释如何在不诉诸 for 循环的情况下做到这一点?
解决方法
看起来 Map2
方法可以做你想做的事。来自文档:
Vector<T> Map2(Func<T,T,T> f,Vector<T> other,Zeros zeros)
将函数应用于两个向量的每个值对,并将结果作为新向量返回。
注意第三个参数实际上是可选的,默认值为Zeros.AllowSkip
。
你可以使用这样的方法:
Vector<double> C = A.Map2((x,y) => (x > y ? y : x),B);