Учитывая массив, как мы можем создать несколько новых массивов в Python, используя функцию по нашему выбору?(Numpy или иначе) - PullRequest
0 голосов
/ 08 октября 2018

Рассмотрим следующее:

Допустим, у нас есть массив целых чисел произвольной длины L.

[a,b,c,...,z]

Я знаю, что мы можем легко разбить этот массив и создать несколько массивов длиныn: [a,b], [c,d],..., [y,z]

Как бы мы разбили этот массив и вернули что-то вроде [a,b,c], [b,c,d], [c,d,e], ..., [w,x,y], [x,y,z]?

По сути, если для данного массива мы можем создать новые массивы из этого массива, используя любую функцию по нашему выбору?Влияет ли тип функции на то, как мы это делаем?Насколько причудливым мы можем стать?

Большая часть того, что я обнаружил, включает в себя сначала нарезку массива, а затем выполнение операций над новыми массивами.Я хотел бы создать свои массивы на основе выбранной мной функции.

1 Ответ

0 голосов
/ 08 октября 2018

Просто с помощью индекса нарезать массив и переместить окно на один шаг.Перерыв, когда размер окна меньше ожидаемого

a=[1,2,3,4,5,6,7,8,9]
def slicing_window(a,n):
    new_arr=[]
    if(len(a)<n):
        return a
    for i in range(0,len(a)):
        if len(a[i:i+n])==n:
            new_arr.append(a[i:i+n])
        else:
            break
    return new_arr
slicing_window(a,3) 

Вывод:

[[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8], [7, 8, 9]]

ИЛИ

from toolz import sliding_window
list(sliding_window(3, a))# will generate tuples

Если вас интересует просто список

from toolz import sliding_window
map(list,sliding_window(3, a))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...