Если вы возьмете 2D-массив и извлечете левую или правую половину, он больше не будет непрерывным в памяти - между строками будут пробелы.
x = np.arange(6).reshape(2,3)
дает x
:
array([[0, 1, 2],
[3, 4, 5]])
Если мы извлечем центральный столбец в y
:
y = x[:,1:2]
, то получим y
:
array([[1],
[4]])
, но если мы проверим, является ли он смежным в память:
y.flags['C_CONTIGUOUS']
дает:
False
Решение состоит в том, чтобы извлечь столбец в непрерывный массив:
y = np.ascontiguousarray(x[:,1:2])
y.flags['C_CONTIGUOUS']
дает:
True