如何将矩阵元素与 NumPy 中的阈值进行比较

How to compare matrix elements to threshold in NumPy

我有一个正值矩阵,以及一个阈值列表。阈值列表已排序。例如:

X = np.matrix([[1., 2., 3.,], [0., 2., 1.], [4., 1., 2.]])
y = [0.5, 1., 3., 5.]

我想编写一个函数,将 X 的所有小于 y[1] 的条目设置为 y[1],所有等于或大于 y[1] 且小于 y[ 的条目2] 到 y[2],等等

这当然可以通过简单地遍历矩阵条目和阈值来完成,但我想找到一种更有效的方法。我查看了 clip,但它并没有完全满足我的需要。

您可以使用np.searchsorted获取指数:

>>> np.array(y)[np.searchsorted(y, X)]
array([[ 1. ,  3. ,  3. ],
       [ 0.5,  3. ,  1. ],
       [ 5. ,  1. ,  3. ]])