Причина, по которой вы получаете [0,0] за ответ, заключается в том, что np.extract требует, чтобы массив в условии имел ту же форму, что и массив, передаваемый во второй аргумент. perm_list [:, 2] отличается по форме от perm_list. Ниже это исправляет и возвращает [2,2], как говорит mkieger1. Ниже приведен код, который возвращает ответ, который вы ищете.
def p():
perm_list = np.array([[0,0,0,0,0],[0,0,0,0,0],[4,7,0,0,0],[2,6,2,0,0],[0,0,0,0,0],[0,0,0,0,0],[2,6,2,0,0],[4,7,0,0,0]])
perm_list_mask = np.extract(perm_list[:, 2] == 2, perm_list[:,2])
print(perm_list_mask)
def pSolved():
perm_list = np.array([[0,0,0,0,0],[0,0,0,0,0],[4,7,0,0,0],[2,6,2,0,0],[0,0,0,0,0],[0,0,0,0,0],[2,6,2,0,0],[4,7,0,0,0]])
return np.where(perm_list[:, 2] == 2)
Выход:
>>> p()
[2 2]
>>> pSolved()
(array([3, 6]),)