我想限制我从Poisson的分布中生成的样本。 原始数据就像
[[2 12] [3 14]] (samples)
这里,[2 12]也对应于分布样本[P1 P2],[3 14]。 我想用最大值上限P1和P2,比如说
[4 12] (max-values)
使用这些参数,我想输出(我想保留向量)
[[2 12] [3 12]]
这很简单,但我不知道我的方式是否非常惯用:
(defn cap-poisson-samples
"Cap poisson samples to meet the expactations
if required"
[data max-values]
(mapv
(fn [x]
(mapv (fn [u v] (if (> u v) v u)) x max-values))
data))
有人告诉我,过去避免使用嵌套map
会更好,但我不知道它是否属实。
我知道prewalk
存在,但无法传递两个输入(例如我的第二个mapv
)。
我也可以使用for
,但它更重。
一般来说,当我处理两个向量时,我必须处理相同的索引时,我很失落。我在clojure中搜索;核心,但我没有找到任何。
所以我通常使用for
或mapv
,具体取决于索引是否重要这一事实。
由于