





Для головной функции вы можете просто нарезать массив с помощью dataset[:10].
Для хвостовой функции вы можете просто нарезать массив с помощью dataset[-10:].
Предупреждение: набор данных[-1:] возвращает последний элемент массива, а набор данных[-0:] возвращает весь массив, поэтому хвост(0) возвращает все, а не ничего. Смотрите мой ответ ниже, который исправляет это.
Вы можете сделать это для любого итерируемого Python.
PEP-3132, который находится в python 3.x (https://www.python.org/dev/peps/pep-3132/), может использовать символ * для «остальной» итерации.
Чтобы сделать то, что вы хотите:
>>> import numpy as np
>>> np.array((1,2,3))
array([1, 2, 3])
>>> head, *tail = np.array((1,2,3))
>>> head
1
>>> tail
[2, 3]
Это хорошо работает:
def nparray_tail(x: np.array, n:int):
"""
Returns tail N elements of array.
:param x: Numpy array.
:param n: N elements to return on end.
:return: Last N elements of array.
"""
if n == 0:
return x[0:0] # Corner case: x[-0:] will return the entire array but tail(0) should return an empty array.
else:
return x[-n:] # Normal case: last N elements of array.
В качестве бонуса это исправляет неинтуитивный угловой случай в ответе от @feedMe: dataset[-0:] возвращает весь массив, а не пустой массив, как можно было бы ожидать при запросе последних 0 элементов в хвостовой части массива. Это согласуется с функцией .tail() в Pandas.
Вы можете проверить это через
array[:head]иarray[tail:]. Вы должны указать голову и хвост, так как numpy не имеет для этого значения по умолчанию (в отличие от панд, где вы может также указываете количество строк).