Spec-Zone.ru › OCaml

Модуль Bigarray.Array1

module Array1: sig .. end

Одномерные массивы. Структура Array1 предоставляет операции, аналогичные операциям Bigarray.Genarray, но специализированные для одномерных массивов. (Структуры Bigarray.Array2 и Bigarray.Array3 ниже предоставляют операции, специализированные для двумерных и трехмерных массивов.) Зная число измерений массива статически, можно ускорить операции и обеспечить более точную статическую проверку типов.

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

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

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

Array1.create kind layout dim возвращает новый Bigarray одного измерения, размер которого равен dim. kind и layout определяют вид элементов массива и расположение в памяти, как описано для Bigarray.Genarray.create.

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

Array1.init kind layout dim f возвращает новый Bigarray b одного измерения, размер которого равен dim. kind и layout определяют вид элементов массива и расположение в памяти, как описано для Bigarray.Genarray.create.

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

Другими словами, Array1.init kind layout dimensions f табулирует результаты f, примененные к индексам нового Bigarray, расположение которого описывается kind, layout и dim.

  • Since 4.12
val dim : ('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

Array1.change_layout a layout возвращает Bigarray со заданным layout, используя данные из a (и, следовательно, имеющий то же измерение, что и a). Копирование элементов не происходит: новый массив и исходный массив используют одно и то же хранилище.

  • 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 -> 'a

Array1.get a x, или, альтернативно, a.{x}, возвращает элемент a по индексу x. x должно быть больше или равно 0 и строго меньше Array1.dim a если у a расположение C. Если у a расположение Fortran, x должно быть больше или равно 1 и меньше или равно Array1.dim a. В противном случае, поднимается Invalid_argument.

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

Array1.set a x v, также записывается как a.{x} <- v, сохраняет значение v по индексу x в a. x должно находиться в пределах границ a, как описано в Bigarray.Array1.get; в противном случае, поднимается Invalid_argument.

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

Извлечение подмассива из данного одномерного Bigarray. Подробнее см. Bigarray.Genarray.sub_left.

val slice : ('a, 'b, 'c) t -> int -> ('a, 'b, 'c) Bigarray.Array0.t

Извлечение скаляра (массива нулевой размерности) из данного одномерного Bigarray. Целое число — индекс скаляра для извлечения. Подробнее см. Bigarray.Genarray.slice_left и Bigarray.Genarray.slice_right.

  • Since 4.05
val blit : ('a, 'b, 'c) t -> ('a, 'b, 'c) t -> unit

Копирование первого 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 -> ('a, 'b, 'c) t

Построение одномерного Bigarray, инициализированного из данного массива.

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

Как Bigarray.Array1.get, но проверка границ не всегда выполняется. Используйте с осторожностью и только когда логика программы гарантирует, что доступ находится в пределах границ.

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

Как Bigarray.Array1.set, но проверка границ не всегда выполняется. Используйте с осторожностью и только когда логика программы гарантирует, что доступ находится в пределах границ.

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

Spec-Zone.ru

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