module Array1:sig
..end
一维数组。 Array1
结构提供了与 Bigarray.Genarray
类似的操作,但专门用于一维数组的情况。(下面的 Bigarray.Array2
和 Bigarray.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,大小为 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
,其维度为 1,大小为 dim
。kind
和 layout
确定数组元素类型和数组布局,如 Bigarray.Genarray.create
中所述。
数组的每个元素 Array1.get b i
都初始化为 f i
的结果。
换句话说,Array1.init kind layout dimensions f
会将 f
应用于一个新 Bigarray 的索引,并列出结果,该 Bigarray 的布局由 kind
、layout
和 dim
描述。
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 a
是 a
中元素的数量乘以 a
的 Bigarray.kind_size_in_bytes
。
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
存储在 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_left
和 Bigarray.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
,但不总是执行边界检查。谨慎使用,仅当程序逻辑保证访问在边界内时才使用。