模組 Bigarray.Array3

module Array3: sig .. end

三維陣列。Array3 結構提供類似於 Bigarray.Genarray 的操作,但專門針對三維陣列的情況。


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

三維 Bigarray 的類型,其元素具有 OCaml 類型 'a、表示種類 'b 和記憶體佈局 'c

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

Array3.create kind layout dim1 dim2 dim3 返回一個新的三維 Bigarray,其在第一維的大小為 dim1,在第二維的大小為 dim2,在第三維的大小為 dim3kindlayout 決定陣列元素種類和陣列佈局,如 Bigarray.Genarray.create 中所述。

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

Array3.init kind layout dim1 dim2 dim3 f 返回一個新的三維 Bigarray b,其在第一維的大小為 dim1,在第二維的大小為 dim2,在第三維的大小為 dim3kindlayout 決定陣列元素種類和陣列佈局,如 Bigarray.Genarray.create 中所述。

陣列的每個元素 Array3.get b i j k 都初始化為 f i j k 的結果。

換句話說,Array3.init kind layout dim1 dim2 dim3 f 會將 f 應用於新 Bigarray 的索引的結果製成表格,該 Bigarray 的佈局由 kindlayoutdim1dim2dim3 描述。

val dim1 : ('a, 'b, 'c) t -> int

返回給定三維 Bigarray 的第一維度。

val dim2 : ('a, 'b, 'c) t -> int

返回給定三維 Bigarray 的第二維度。

val dim3 : ('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

Array3.change_layout a layout 返回一個具有指定 layout 的 Bigarray,與 a 共享資料(因此具有與 a 相同的維度)。不涉及元素的複製:新陣列和原始陣列共享相同的儲存空間。維度會反轉,例如 C 佈局中的 get v [| a; b; c |] 在 Fortran 佈局中會變成 get v [| c+1; b+1; a+1 |]

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

Array3.get a x y z,也寫成 a.{x,y,z},返回 a 在座標 (x, y, z) 的元素。xyz 必須在 a 的邊界內,如 Bigarray.Genarray.get 中所述;否則,會引發 Invalid_argument

val set : ('a, 'b, 'c) t -> int -> int -> int -> 'a -> unit

Array3.set a x y v,或另一種寫法 a.{x,y,z} <- v,將值 v 儲存在 a 中座標 (x, y, z) 的位置。xyz 必須在 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_leftArray3.sub_left 僅適用於具有 C 佈局的陣列。

val sub_right : ('a, 'b, Bigarray.fortran_layout) t ->
int -> int -> ('a, 'b, Bigarray.fortran_layout) t

通過限制第二維度,提取給定三維 Bigarray 的三維子陣列。更多詳細資訊,請參閱 Bigarray.Genarray.sub_rightArray3.sub_right 僅適用於具有 Fortran 佈局的陣列。

val slice_left_1 : ('a, 'b, Bigarray.c_layout) t ->
int -> int -> ('a, 'b, Bigarray.c_layout) Bigarray.Array1.t

通過固定前兩個座標,提取給定三維 Bigarray 的一維切片。整數參數是要提取的切片的座標。更多詳細資訊,請參閱 Bigarray.Genarray.slice_leftArray3.slice_left_1 僅適用於具有 C 佈局的陣列。

val slice_right_1 : ('a, 'b, Bigarray.fortran_layout) t ->
int -> int -> ('a, 'b, Bigarray.fortran_layout) Bigarray.Array1.t

通過固定最後兩個座標,提取給定三維 Bigarray 的一維切片。整數參數是要提取的切片的座標。更多詳細資訊,請參閱 Bigarray.Genarray.slice_rightArray3.slice_right_1 僅適用於具有 Fortran 佈局的陣列。

val slice_left_2 : ('a, 'b, Bigarray.c_layout) t ->
int -> ('a, 'b, Bigarray.c_layout) Bigarray.Array2.t

通過固定第一個座標,提取給定三維 Bigarray 的二維切片。整數參數是要提取的切片的第一個座標。更多詳細資訊,請參閱 Bigarray.Genarray.slice_leftArray3.slice_left_2 僅適用於具有 C 佈局的陣列。

val slice_right_2 : ('a, 'b, Bigarray.fortran_layout) t ->
int -> ('a, 'b, Bigarray.fortran_layout) Bigarray.Array2.t

通過固定最後一個座標,提取給定三維 Bigarray 的二維切片。整數參數是要提取的切片的座標。更多詳細資訊,請參閱 Bigarray.Genarray.slice_rightArray3.slice_right_2 僅適用於具有 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 array -> ('a, 'b, 'c) t

構建一個從給定的陣列的陣列的陣列初始化的三維 Bigarray。

val unsafe_get : ('a, 'b, 'c) t -> int -> int -> int -> 'a

類似於 Bigarray.Array3.get,但並非總是執行邊界檢查。

val unsafe_set : ('a, 'b, 'c) t -> int -> int -> int -> 'a -> unit

類似於 Bigarray.Array3.set,但並非總是執行邊界檢查。