#python-2.7 #numpy
#python-2.7 #numpy
Вопрос:
Я пытаюсь переопределить getitem numpy ndarray
следующим образом
import numpy as np
class myarr(np.ndarray):
def __getitem__(self, ij):
return ij # just return the slice object itself
Однако в случае открытого конца я получаю странное число для остановки фрагмента, а отрицательное начало фрагмента увеличивается на единицу:
>>> a = myarr([1,2,3,4,5,6,7,8])
>>> a[-3:]
slice(-2, 9223372036854775807, None)
Здесь я ожидал slice(-3, None, None)
бы, что это также результат
>>> np.s_[-3:]
Итак, почему такое поведение и как его можно исправить?
Это происходит в Python 2.7.14 numpy 1.14.0, а не в Python 3.6.9 numpy 1.18.5.
Комментарии:
1. 9223372036854775807 — это самое большое целое число со знаком, которое вы можете представить в 64 битах , поэтому это последний элемент, к которому вы сможете обратиться в NumPy, так что это в основном «конец».
2. Если это не вызывает никаких проблем, его не нужно исправлять.