#python #python-3.x #numpy #numpy-ndarray
#python #python-3.x #numpy #numpy-ndarray
Вопрос:
Базовый срез всегда возвращает a, view
согласно ссылке Numpy, и его более подробное определение скопировано ниже:
Базовая нарезка расширяет базовую концепцию Python о нарезке до N измерений. Базовый срез происходит, когда obj является объектом среза (созданным с помощью нотации start: stop: step внутри скобок), целым числом или набором объектов среза и целых чисел. Объекты Ellipsis и newaxis также могут перемежаться с ними.
Что меня беспокоит, так это выделенная жирным шрифтом часть. Я пытался найти пример, соответствующий определению выделенной жирным шрифтом части, но безрезультатно. Неудачные примеры показаны ниже:
import numpy as np
y = np.array(
[ [f"y[{r},{c}]" for c in range(5)]
for r in range(6)]
)
def check_is_view(arr1, arr2):
try:
if arr2.base is arr1:
return True
elif np.may_share_memory(arr1, arr2):
return True
return False
except AttributeError:
return False
## tuples of integers
print("print(y[(0,1), (3,4)]):")
print(check_is_view(y, y[(0,1), (3,4)])) #return False which means not a view
## a slice object a tuple of integers
print("print(y[slice(0,2), (3,4)]:")
print(check_is_view(y, y[slice(0,2), (3,4)])) #return False which means not a view
Что означает выделенная жирным шрифтом часть? Какие примеры для выделенной жирным шрифтом части?
Комментарии:
1. Имеющийся у вас код отлично работает, если вы передаете ему массивы. a =np.array((1,2)) b = a[1:1] print(check_is_view(a, b))
2. @ggorlen упускает
y
. Обновлено.3.
x[1, 2:6, np.newaxis]
является эквивалентомx[(1, slice(2,6), np.newaxis)]
. В python кортеж создается запятой,()
которая просто добавляет ясности.4. @hpaulj Хорошо, это объясняет значение «кортежа объектов среза и целых чисел», если то, что вы утверждаете, действительно верно. Очень запутанный, когда я просто читаю текст.