/ / jak uzyskać indeks największych wartości n w wielowymiarowej tablicy numpy [duplikat] - python, tablice, algorytm, numpy, tablica wielowymiarowa

jak uzyskać indeks największych n wartości w wielowymiarowej tablicy numpy [duplikat] - python, tablice, algorytm, numpy, tablica wielowymiarowa

Chcę uzyskać indeks największych n wartości w wielowymiarowej tablicy numpy. Aby uzyskać indeks największych n wartości w jednowymiarowej tablicy numpy, znalazłem to. Po przetestowaniu w powłoce interaktywnej w python, wydaje się, że bottleneck.argpartsort nie może działać na wielowymiarową tablicę numpy. Aby uzyskać indeks największej wartości w wielowymiarowej tablicy numpy, znalazłem to. Nie można uzyskać największego n. Metoda, którą mogę dać, to przetłumaczyć wielowymiarową tablicę numpy na listę {value:index}(indeks jest prezentowany przez krotkę), a następnie posortuj listę według wartości i pobierz indeks. Czy jest coś łatwiejszego lub bardziej wydajnego?

Odpowiedzi:

4 dla odpowiedzi № 1

Nie mam dostępu do bottleneck, więc w tym przykładzie używam argsort, ale powinieneś być w stanie używać go w taki sam sposób:

#!/usr/bin/env python
import numpy as np
N = 4
a = np.random.random(20).reshape(4, 5)
print(a)

# Convert it into a 1D array
a_1d = a.flatten()

# Find the indices in the 1D array
idx_1d = a_1d.argsort()[-N:]

# convert the idx_1d back into indices arrays for each dimension
x_idx, y_idx = np.unravel_index(idx_1d, a.shape)

# Check that we got the largest values.
for x, y, in zip(x_idx, y_idx):
print(a[x][y])