2015-05-19 2 views
2

У меня есть матрица положительных значений, а также список пороговых значений. Список порогов сортируется. Например:Как сравнить матричные элементы с порогом в NumPy

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

Я хотел бы написать функцию, которая устанавливает все записи X, которые меньше, чем у [1] у [1], то все записи, которые равны или больше, чем у [1] и меньше, чем у [2] на y [2] и т. д.

Это может быть сделано путем простого итерации по элементам матрицы и порогам, конечно, но я хотел бы найти более эффективный способ. Я посмотрел на clip, но это не совсем то, что мне нужно.

+0

вы можете объяснить, что вы хотите сказать, по «всех вхождений X, которые меньше, чем у [1] у [1], все записи, равны или больше y [1] и меньше y [2] до y [2] и т. д. " спасибо – farhawa

ответ

0

Вы можете использовать np.searchsorted для получения индексов:

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

Спасибо, это именно то, что мне нужно! – Darina