Я хотел бы проверить, являются ли два ndarrays перекрывающимися представлениями одного и того же базового ndarray.Как проверить, что два сегмента массива numpy одинаковы (или перекрываются)?
Чтобы проверить, что два ломтика точно так же, я могу сделать что-то вроде:
a.base is b.base and a.shape == b.shape and a.data == b.data
Сравнение буферов, казалось, работать в одном простом случае - может кто-нибудь сказать мне, если он работает в целом?
К сожалению, это не работает для перекрывающихся фрагментов, и я не понял, как извлечь из буфера именно то, что его смещение находится в базовых данных - возможно, кто-то может мне помочь?
Кроме того, говорят a
и b
являются кусочками x
и c
является кусочком b
. Поскольку базовые данные одинаковы, я также хотел бы обнаружить перекрытия между c
и a
. Казалось бы, я должен уйти от сравнения только буфера и формы ... если бы кто-нибудь мог сказать мне, как именно, я был бы благодарен.
Какие случаи я могу ожидать, чтобы потерпеть неудачу? Если его только шахматные фрагменты с шагом не единицы, которые генерируют ложные положительные, я могу жить с этим .... – shaunc
'x [0 :: 2]'/'x [1 :: 2]'. 'x [:, 0: 5]', 'x [:, 5:10]'. 'x = np.dstack (* args); np.may_share_memory (x [0], x [1]) '. –