Будет ли результат numpy.lib.stride_tricks.as_strided
зависеть от dtype массива NumPy?
Этот вопрос возникает из определения .strides
, которое
Кортеж байтов для шага в каждом измерении при перемещении массива.
Возьмите следующую функцию, которую я использовал в других вопросах здесь. Он принимает массив 1d или 2d и создает перекрывающиеся окна длиной window
. Результат будет на один размер больше входного.
def rwindows(a, window):
if a.ndim == 1:
a = a.reshape(-1, 1)
shape = a.shape[0] - window + 1, window, a.shape[-1]
strides = (a.strides[0],) + a.strides
windows = np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)
return np.squeeze(windows)
# examples
# rwindows(np.arange(5), window=2)
# rwindows(np.arange(20).reshape((5,4)), window=2)
Из-за определения шагов и потому, что, например, в противном случае эквивалентные массивы dtype float32
и float64
будут иметь разные шаги, это когда-нибудь взорвет мою функцию rwindows
выше
Я попытался протестировать, но это было не исчерпывающим образом, и я ищу ответ, который (1) объясняет, имеет ли отказ или отказ от функции doc иметь какое-либо отношение к тому, что я прошу здесь, и (2) объясняет, почему или почему не эквивалентные друг другу массивы с разными типами и степенями будут приводить к различным результатам в приведенном выше.