模块 Bigarray.Array2

module Array2: sig .. end

二维数组。 Array2 结构提供了类似于 Bigarray.Genarray 的操作,但专门用于二维数组的情况。


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

二维 Bigarray 的类型,其元素具有 OCaml 类型 'a,表示形式类型 'b,以及内存布局 'c

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

Array2.create kind layout dim1 dim2 返回一个新的二维 Bigarray,其大小在第一维上为 dim1,在第二维上为 dim2kindlayout 确定数组元素类型和数组布局,如 Bigarray.Genarray.create 中所述。

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

Array2.init kind layout dim1 dim2 f 返回一个新的二维 Bigarray b,其大小在第一维上为 dim2,在第二维上为 dim2kindlayout 确定数组元素类型和数组布局,如 Bigarray.Genarray.create 中所述。

数组的每个元素 Array2.get b i j 被初始化为 f i j 的结果。

换句话说,Array2.init kind layout dim1 dim2 f 对应用于新 Bigarray 的索引的 f 的结果进行制表,该新 Bigarray 的布局由 kindlayoutdim1dim2 描述。

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

返回给定二维 Bigarray 的第一维。

val dim2 : ('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

Array2.change_layout a layout 返回一个具有指定 layout 的 Bigarray,与 a 共享数据(因此具有与 a 相同的维度)。没有涉及元素复制:新数组和原始数组共享相同的存储空间。维度被反转,使得在 C 布局中 get v [| a; b |] 在 Fortran 布局中变为 get v [| b+1; a+1 |]

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

size_in_bytes aa 中元素的数量乘以 aBigarray.kind_size_in_bytes

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

Array2.get a x y,也写为 a.{x,y},返回 a 在坐标 (x, y) 处的元素。 xy 必须在 a 的边界内,如 Bigarray.Genarray.get 中所述;否则,将引发 Invalid_argument

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

Array2.set a x y v,或可选地 a.{x,y} <- v,在 a 的坐标 (x, y) 处存储值 vxy 必须在 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_leftArray2.sub_left 仅适用于具有 C 布局的数组。

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

通过限制第二维来提取给定二维 Bigarray 的二维子数组。有关更多详细信息,请参阅 Bigarray.Genarray.sub_rightArray2.sub_right 仅适用于具有 Fortran 布局的数组。

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

提取给定二维 Bigarray 的一行(一维切片)。整型参数是要提取的行索引。有关更多详细信息,请参阅 Bigarray.Genarray.slice_leftArray2.slice_left 仅适用于具有 C 布局的数组。

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

提取给定二维 Bigarray 的一列(一维切片)。整型参数是要提取的列索引。有关更多详细信息,请参阅 Bigarray.Genarray.slice_rightArray2.slice_right 仅适用于具有 Fortran 布局的数组。

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 array -> ('a, 'b, 'c) t

构建一个从给定数组的数组初始化的二维 Bigarray。

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

类似于 Bigarray.Array2.get,但边界检查并不总是执行。

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

类似于 Bigarray.Array2.set,但边界检查并不总是执行。