模組 Bigarray.Array1

module Array1: sig .. end

一維陣列。Array1 結構提供的操作類似於 Bigarray.Genarray,但專門針對一維陣列的情況。(下面的 Bigarray.Array2Bigarray.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,其大小為 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,其大小為 dimkindlayout 決定陣列元素的種類和陣列佈局,如 Bigarray.Genarray.create 中所述。

陣列中的每個元素 Array1.get b i 都會初始化為 f i 的結果。

換句話說,Array1.init kind layout dimensions f 會將 f 應用於新 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 的元素。如果 a 具有 C 佈局,則 x 必須大於或等於 0 且嚴格小於 Array1.dim a。如果 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 必須位於 Bigarray.Array1.get 中描述的 a 的界限內;否則,會引發 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,但不會始終執行邊界檢查。請謹慎使用,且僅在程式邏輯保證存取在界限內時使用。