Непрерывный массив в NumPy
Непрерывный массив в порядке C занимает в памяти сплошной отрезок без пропусков между строками. Это удобно для быстрых операций по всем элементам.
Таблица, созданная из строк, обычно непрерывна в порядке C. После транспонирования картина часто меняется:
import numpy as np
table = np.array([[1, 2, 3], [4, 5, 6]])
flipped = table.T
print(flipped.flags['C_CONTIGUOUS']) # выведет False
Если нужен непрерывный массив в порядке
C, помогает ascontiguousarray.
Она строит копию с нужным расположением
байтов, когда исходник разбит по
шагам:
import numpy as np
table = np.array([[1, 2, 3], [4, 5, 6]])
flipped = table.T
chunk = np.ascontiguousarray(flipped)
print(chunk.flags['C_CONTIGUOUS']) # выведет True
Создайте таблицу [[10, 20], [30, 40]],
транспонируйте её и выведите,
непрерывен ли результат в порядке C.
Создайте таблицу [[0, 1], [2, 3]],
транспонируйте её, получите
непрерывную копию в порядке C
и выведите признак непрерывности
у копии.