to zawsze wybiera pierwsze i ostatnie elementy:
which_idxs = lambda m, n: np.rint(np.linspace(1, n, min(m,n)) - 1).astype(int)
evenly_spaced = np.array(your_list)[which_idxs(m,n)]
ten wybiera tylko maksymalnie n elementów, w przypadku gdy m jest większe niż n. Jeśli naprawdę chcesz go równo rozłożone w całej tablicy, nawet na końcach, to byłoby to zamiast:
which_idxs = lambda m, n: [idx for idx in np.rint(np.linspace(1-n/(2*min(m,n)), n+n/(2*min(m,n)), min(m,n)+2) - 1).astype(int) if idx in range(n)]
evenly_spaced = np.array(your_list)[which_idxs(m,n)]
co daje mniej więcej tak:
>>> np.array([1, 2, 3, 'a', 'b', 'c'])[which_idxs(m,n)]
Out: array(['2', 'b'])
co jest złego w wyborze pierwszego ' elementy m? wydaje się, że istnieje pewne ograniczenie, które sugerujesz, ale nie opisałeś go. –
Czy chcesz przyjąć pozycje 'm' równomiernie rozłożone na' n'? – hamstergene
Dzięki. Musi być sprawiedliwe - potrzebuję jednakowo dużo z każdej podsekcji - tj. Z każdej części oryginalnej tablicy. To musi być rozłożone. – j13r