模块 Bigarray.Array1

module Array1: sig .. end

一维数组。 Array1 结构提供了与 Bigarray.Genarray 类似的操作,但专门用于一维数组的情况。(下面的 Bigarray.Array2Bigarray.Array3 结构提供了针对二维和三维数组的专门操作。)静态地知道数组的维度可以加快操作速度,并进行更精确的静态类型检查。


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

元素 OCaml 类型为 'a、表示类型为 'b 且内存布局为 'c 的一维 Bigarray 的类型。

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

Array1.create kind layout dim 返回一个新的 Bigarray,其维度为 1,大小为 dimkindlayout 确定数组元素类型和数组布局,如 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,其维度为 1,大小为 dimkindlayout 确定数组元素类型和数组布局,如 Bigarray.Genarray.create 中所述。

数组的每个元素 Array1.get b i 都初始化为 f i 的结果。

换句话说,Array1.init kind layout dimensions f 会将 f 应用于一个新 Bigarray 的索引,并列出结果,该 Bigarray 的布局由 kindlayoutdim 描述。

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 返回一个具有指定 layout 的 Bigarray,与 a 共享数据(因此与 a 具有相同的维度)。不涉及元素复制:新数组和原始数组共享相同的存储空间。

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

Array1.get a xa.{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 存储在 a 中索引为 x 的位置。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_leftBigarray.Genarray.slice_right

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,但不总是执行边界检查。谨慎使用,仅当程序逻辑保证访问在边界内时才使用。