поэлементный поиск на одном ndarray к другому ndarray различных форм - PullRequest
2 голосов
/ 02 июня 2010

Я новичок в NumPy. Интересно, есть ли способ сделать поиск двух ndarray разных форм? например, у меня есть 2 ndarrays, как показано ниже:

X = array([[0, 3, 6],
       [3, 3, 3],
       [6, 0, 3]])

Y = array([[0, 100],
       [3, 500],
       [6, 800]])

и хотел бы найти каждый элемент X в Y, а затем иметь возможность вернуть второй столбец Y:

Z = array([[100, 500, 800],
       [500, 500, 500],
       [800, 100, 500]]) 

спасибо, фахин

1 Ответ

2 голосов
/ 02 июня 2010

Вы можете напрямую использовать эффективные операции с массивами NumPy:

Y_dict = dict(Y)
Z = vectorize(lambda x: Y_dict[x])(X)

Преимущество этого подхода заключается в том, чтобы работать с любым размером X (1-мерный массив, 2- или N-мерный массив ...).

Векторизованная функция автоматически применяет поиск по словарю к каждому элементу массива X по очереди.

Первая строка предназначена только для оптимизации; в противном случае конструкция словаря будет иметь место для каждого элемента в X.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...