Функция asfortranarray
Функция asfortranarray преобразует входной массив
в массив с порядком хранения элементов в стиле Fortran
(column-major). Первым параметром функция принимает
массив или объект, который может быть преобразован в массив.
Вторым параметром можно передать тип данных элементов.
Функция возвращает новый массив или исходный, если он
уже имеет порядок Fortran, без лишнего копирования.
Синтаксис
np.asfortranarray(a, [dtype])
Пример
Давайте создадим массив в формате C (row-major) и преобразуем его в формат Fortran (column-major):
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
fortran_arr = np.asfortranarray(arr)
print(fortran_arr)
Результат выполнения кода:
[[1 2 3]
[4 5 6]]
Пример
Давайте проверим флаг порядка хранения у исходного
и преобразованного массивов с помощью атрибута flags:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
fortran_arr = np.asfortranarray(arr)
print(arr.flags['C_CONTIGUOUS'])
print(arr.flags['F_CONTIGUOUS'])
print(fortran_arr.flags['C_CONTIGUOUS'])
print(fortran_arr.flags['F_CONTIGUOUS'])
Результат выполнения кода:
True
False
False
True
Пример
Давайте создадим массив из списка и преобразуем его в формат Fortran с указанием типа данных:
import numpy as np
arr = np.asfortranarray([1, 2, 3, 4, 5], dtype=np.float32)
print(arr)
print(arr.dtype)
Результат выполнения кода:
[1. 2. 3. 4. 5.]
float32
Пример
Давайте покажем, что функция не создает копию, если массив уже имеет порядок Fortran:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]], order='F')
fortran_arr = np.asfortranarray(arr)
print(arr is fortran_arr)
Результат выполнения кода:
True
Смотрите также
-
функцию
asarray,
которая преобразует входные данные в массив -
функцию
asanyarray,
которая преобразует входные данные в массив или подкласс массива -
функцию
ascontiguousarray,
которая преобразует массив в формат C (row-major) -
функцию
copy,
которая создает копию массива с возможностью указания порядка хранения