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
,在第二個維度的尺寸為 dim2
。kind
和 layout
決定了陣列元素的種類和陣列的配置,如 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
,在第二個維度的尺寸為 dim2
。kind
和 layout
決定了陣列元素的種類和陣列的配置,如 Bigarray.Genarray.create
所述。
陣列的每個元素 Array2.get b i j
都會初始化為 f i j
的結果。
換句話說,Array2.init kind layout dim1 dim2 f
會將 f
應用於新的 Bigarray 的索引結果製成表格,該 Bigarray 的配置由 kind
、layout
、dim1
和 dim2
描述。
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 a
是 a
中的元素數量乘以 a
的 Bigarray.kind_size_in_bytes
。
val get : ('a, 'b, 'c) t -> int -> int -> 'a
Array2.get a x y
,也寫作 a.{x,y}
,傳回 a
在座標 (x
, y
) 的元素。x
和 y
必須在 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
,將值 v
儲存在 a
中座標 (x
, y
) 的位置。x
和 y
必須在 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_left
。Array2.sub_left
僅適用於 C 配置的陣列。
val sub_right : ('a, 'b, Bigarray.fortran_layout) t ->
int -> int -> ('a, 'b, Bigarray.fortran_layout) t
藉由限制第二個維度,擷取給定二維 Bigarray 的二維子陣列。有關更多詳細資訊,請參閱 Bigarray.Genarray.sub_right
。Array2.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_left
。Array2.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_right
。Array2.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
,但並非總是執行邊界檢查。