Мне нужен логический массив, который указывает, соответствует ли элемент в списке / серии друг другу в одном и том же массиве. Вероятно, это единственная функция scipy, если бы я знал, как ее назвать, но мои поиски не были плодотворными. Следующий код делает то, что мне нужно, но, вероятно, выиграет от векторизации.
import numpy as np
colors = ['red', 'green', 'blue', 'red', 'red', 'yellow']
match_array = np.ndarray((len(colors), len(colors)), dtype=bool)
for i, y in enumerate(colors):
for j, x in enumerate(colors):
match_array[i][j] = (x == y)
print(match_array)
Выход:
[[ True False False True True False]
[False True False False False False]
[False False True False False False]
[ True False False True True False]
[ True False False True True False]
[False False False False False True]]
Это симметрично относительно диагонали, как и ожидалось, и совпадает с «красным» в индексе 0 с другими «красными» в индексах 3 и 4 по обеим осям. Есть ли доступная библиотечная функция для более эффективной работы?