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
描述。
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
的元素。如果 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_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
,但不會始終執行邊界檢查。請謹慎使用,且僅在程式邏輯保證存取在界限內時使用。