Spec-Zone.ru › OCaml

Модуль Bigarray.Array3

module Array3: sig .. end

Трехмерные массивы. Структура Array3 предоставляет операции, аналогичные операциям Bigarray.Genarray, но специализированные для трёхмерных массивов.

type (!'a, !'b, !'c) t 

Тип трёхмерных Bigarray, элементы которых имеют тип OCaml 'a, вид представления 'b, и расположение в памяти 'c.

val create : ('a, 'b) Bigarray.kind ->       'c Bigarray.layout -> int -> int -> int -> ('a, 'b, 'c) t

Array3.create kind layout dim1 dim2 dim3 возвращает новый Bigarray трёх измерений, размер которого равен dim1 в первом измерении, dim2 во втором измерении и dim3 в третьем. kind и layout определяют тип элементов массива и расположение в памяти, как описано для Bigarray.Genarray.create.

val init : ('a, 'b) Bigarray.kind ->       'c Bigarray.layout ->       int ->       int -> int -> (int -> int -> int -> 'a) -> ('a, 'b, 'c) t

Array3.init kind layout dim1 dim2 dim3 f возвращает новый Bigarray b трёх измерений, размер которого равен dim1 в первом измерении, dim2 во втором измерении и dim3 в третьем. kind и layout определяют тип элементов массива и расположение в памяти, как описано для Bigarray.Genarray.create.

Каждый элемент Array3.get b i j k массива инициализируется результатом f i j k.

Другими словами, Array3.init kind layout dim1 dim2 dim3 f табулирует результаты f, применённые к индексам нового Bigarray, расположение в памяти которого описывается kind, layout, dim1, dim2 и dim3.

  • Since 4.12
val dim1 : ('a, 'b, 'c) t -> int

Возвращает первое измерение данного трёхмерного Bigarray.

val dim2 : ('a, 'b, 'c) t -> int

Возвращает второе измерение данного трёхмерного Bigarray.

val dim3 : ('a, 'b, 'c) t -> int

Возвращает третье измерение данного трёхмерного Bigarray.

val kind : ('a, 'b, 'c) t -> ('a, 'b) Bigarray.kind

Возвращает тип данного Bigarray.

val layout : ('a, 'b, 'c) t -> 'c Bigarray.layout

Возвращает расположение в памяти данного Bigarray.

val change_layout : ('a, 'b, 'c) t ->       'd Bigarray.layout -> ('a, 'b, 'd) t

Array3.change_layout a layout возвращает Bigarray со заданным layout, разделяя данные с a (и, следовательно, имея те же размеры, что и a). Копирование элементов не происходит: новый массив и исходный массив разделяют одно и то же хранилище. Размеры инвертируются так, что get v [| a; b; c |] в C-расположении становится get v [| c+1; b+1; a+1 |] в Fortran-расположении.

  • Since 4.06
val size_in_bytes : ('a, 'b, 'c) t -> int

size_in_bytes a — это количество элементов в a умноженное на Bigarray.kind_size_in_bytes a.

  • Since 4.03
val get : ('a, 'b, 'c) t -> int -> int -> int -> 'a

Array3.get a x y z, также записываемое как a.{x,y,z}, возвращает элемент a в координатах (x, y, z). x, y и z должны находиться в пределах a, как описано для Bigarray.Genarray.get; в противном случае, возникает Invalid_argument.

val set : ('a, 'b, 'c) t -> int -> int -> int -> 'a -> unit

Array3.set a x y v, или альтернативно a.{x,y,z} <- v, сохраняет значение v в координатах (x, y, z) в a. x, y и z должны находиться в пределах a, как описано для Bigarray.Genarray.set; в противном случае, возникает Invalid_argument.

val sub_left : ('a, 'b, Bigarray.c_layout) t ->       int -> int -> ('a, 'b, Bigarray.c_layout) t

Извлечь трёхмерный подмассив данного трёхмерного Bigarray, ограничивая первое измерение. Подробнее см. Bigarray.Genarray.sub_left. Array3.sub_left применяется только к массивам с C-расположением.

val sub_right : ('a, 'b, Bigarray.fortran_layout) t ->       int -> int -> ('a, 'b, Bigarray.fortran_layout) t

Извлечь трёхмерный подмассив данного трёхмерного Bigarray, ограничивая второе измерение. Подробнее см. Bigarray.Genarray.sub_right. Array3.sub_right применяется только к массивам с Fortran-расположением.

val slice_left_1 : ('a, 'b, Bigarray.c_layout) t ->       int -> int -> ('a, 'b, Bigarray.c_layout) Bigarray.Array1.t

Извлечь одномерный срез данного трёхмерного Bigarray, зафиксировав первые две координаты. Целочисленные параметры — координаты среза для извлечения. Подробнее см. Bigarray.Genarray.slice_left. Array3.slice_left_1 применяется только к массивам с C-расположением.

val slice_right_1 : ('a, 'b, Bigarray.fortran_layout) t ->       int -> int -> ('a, 'b, Bigarray.fortran_layout) Bigarray.Array1.t

Извлечь одномерный срез данного трёхмерного Bigarray, зафиксировав последние две координаты. Целочисленные параметры — координаты среза для извлечения. Подробнее см. Bigarray.Genarray.slice_right. Array3.slice_right_1 применяется только к массивам с Fortran-расположением.

val slice_left_2 : ('a, 'b, Bigarray.c_layout) t ->       int -> ('a, 'b, Bigarray.c_layout) Bigarray.Array2.t

Извлечь двумерный срез данного трёхмерного Bigarray, зафиксировав первую координату. Целочисленный параметр — первая координата среза для извлечения. Подробнее см. Bigarray.Genarray.slice_left. Array3.slice_left_2 применяется только к массивам с C-расположением.

val slice_right_2 : ('a, 'b, Bigarray.fortran_layout) t ->       int -> ('a, 'b, Bigarray.fortran_layout) Bigarray.Array2.t

Скопировать первый Bigarray во второй Bigarray. Подробнее см. Bigarray.Genarray.blit.

val fill : ('a, 'b, 'c) t -> 'a -> unit

Заполнить данный Bigarray заданным значением. Подробнее см. Bigarray.Genarray.fill.

val of_array : ('a, 'b) Bigarray.kind ->       'c Bigarray.layout -> 'a array array array -> ('a, 'b, 'c) t

Построить трёхмерный Bigarray, инициализированный из данного массива массивов массивов.

val unsafe_get : ('a, 'b, 'c) t -> int -> int -> int -> 'a

Как Bigarray.Array3.get, но проверка границ не всегда выполняется.

val unsafe_set : ('a, 'b, 'c) t -> int -> int -> int -> 'a -> unit

Как Bigarray.Array3.set, но проверка границ не всегда выполняется.

© 1995-2024 INRIA.
https://ocaml.org/manual/5.2/api/Bigarray.Array3.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API