Как получить индекс максимальной операции - PullRequest
1 голос
/ 19 февраля 2020

Я не уверен, как получить индекс следующей функции amax:

a = np.array([1, 2, 3, 4, 5, 6, 7, 8]).reshape(2, 2, 2)
print(np.amax(a, axis = (1, 2)))

np.amax (a, axis = (1, 2)) должно быть [4, 8], и Я ищу индекс как [(0,1,1), (1,1,1)], в частности, я хочу индекс как [(1, 1) (1, 1)] без учета индекса слоя.

1 Ответ

0 голосов
/ 20 февраля 2020
In [654]: a = np.array([1, 2, 3, 4, 5, 6, 7, 8]).reshape(2, 2, 2)                              
In [655]: np.amax(a, axis=(1,2))                                                               
Out[655]: array([4, 8])
In [656]: a                                                                                    
Out[656]: 
array([[[1, 2],
        [3, 4]],

       [[5, 6],
        [7, 8]]])

argmax не принимает индексы кортежа. Мы можем обойти это путем изменения формы:

In [662]: np.argmax(a.reshape(a.shape[0],-1),1)                                                
Out[662]: array([3, 3])

и затем восстановить полный индекс с помощью:

In [669]: idx = np.argmax(a.reshape(a.shape[0],-1),1)                                          
In [670]: idx = np.unravel_index(idx,a.shape[1:])                                              
In [671]: idx                                                                                  
Out[671]: (array([1, 1]), array([1, 1]))
In [672]:                                                                                      
In [672]: idx = (np.arange(a.shape[0]),)+idx                                                   
In [673]: idx                                                                                  
Out[673]: (array([0, 1]), array([1, 1]), array([1, 1]))
In [674]: a[idx]                                                                               
Out[674]: array([4, 8])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...