moonpool/dev/ocaml/Stdlib/Bigarray/Array3/index.html
2023-08-28 17:11:38 +00:00

28 lines
No EOL
22 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Array3 (ocaml.Stdlib.Bigarray.Array3)</title><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> <a href="../../../index.html">ocaml</a> &#x00BB; <a href="../../index.html">Stdlib</a> &#x00BB; <a href="../index.html">Bigarray</a> &#x00BB; Array3</nav><header class="odoc-preamble"><h1>Module <code><span>Bigarray.Array3</span></code></h1><p>Three-dimensional arrays. The <code>Array3</code> structure provides operations similar to those of <a href="../Genarray/index.html"><code>Bigarray.Genarray</code></a>, but specialized to the case of three-dimensional arrays.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> <span>(!'a, !'b, !'c) t</span></span></code></div><div class="spec-doc"><p>The type of three-dimensional Bigarrays whose elements have OCaml type <code>'a</code>, representation kind <code>'b</code>, and memory layout <code>'c</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-create"><a href="#val-create" class="anchor"></a><code><span><span class="keyword">val</span> create : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>)</span> <a href="../index.html#type-kind">kind</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'c</span> <a href="../index.html#type-layout">layout</a></span> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>Array3.create kind layout dim1 dim2 dim3</code> returns a new Bigarray of three dimensions, whose size is <code>dim1</code> in the first dimension, <code>dim2</code> in the second dimension, and <code>dim3</code> in the third. <code>kind</code> and <code>layout</code> determine the array element kind and the array layout as described for <a href="../Genarray/index.html#val-create"><code>Bigarray.Genarray.create</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-init"><a href="#val-init" class="anchor"></a><code><span><span class="keyword">val</span> init :
<span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>)</span> <a href="../index.html#type-kind">kind</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span><span class="type-var">'c</span> <a href="../index.html#type-layout">layout</a></span> <span class="arrow">&#45;&gt;</span></span>
<span>int <span class="arrow">&#45;&gt;</span></span>
<span>int <span class="arrow">&#45;&gt;</span></span>
<span>int <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>Array3.init kind layout dim1 dim2 dim3 f</code> returns a new Bigarray <code>b</code> of three dimensions, whose size is <code>dim1</code> in the first dimension, <code>dim2</code> in the second dimension, and <code>dim3</code> in the third. <code>kind</code> and <code>layout</code> determine the array element kind and the array layout as described for <a href="../Genarray/index.html#val-create"><code>Bigarray.Genarray.create</code></a>.</p><p>Each element <code>Array3.get b i j k</code> of the array is initialized to the result of <code>f i j k</code>.</p><p>In other words, <code>Array3.init kind layout dim1 dim2 dim3 f</code> tabulates the results of <code>f</code> applied to the indices of a new Bigarray whose layout is described by <code>kind</code>, <code>layout</code>, <code>dim1</code>, <code>dim2</code> and <code>dim3</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.12.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-dim1"><a href="#val-dim1" class="anchor"></a><code><span><span class="keyword">val</span> dim1 : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p>Return the first dimension of the given three-dimensional Bigarray.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-dim2"><a href="#val-dim2" class="anchor"></a><code><span><span class="keyword">val</span> dim2 : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p>Return the second dimension of the given three-dimensional Bigarray.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-dim3"><a href="#val-dim3" class="anchor"></a><code><span><span class="keyword">val</span> dim3 : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p>Return the third dimension of the given three-dimensional Bigarray.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-kind"><a href="#val-kind" class="anchor"></a><code><span><span class="keyword">val</span> kind : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>)</span> <a href="../index.html#type-kind">kind</a></span></span></code></div><div class="spec-doc"><p>Return the kind of the given Bigarray.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-layout"><a href="#val-layout" class="anchor"></a><code><span><span class="keyword">val</span> layout : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'c</span> <a href="../index.html#type-layout">layout</a></span></span></code></div><div class="spec-doc"><p>Return the layout of the given Bigarray.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-change_layout"><a href="#val-change_layout" class="anchor"></a><code><span><span class="keyword">val</span> change_layout : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'d</span> <a href="../index.html#type-layout">layout</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'d</span>)</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>Array3.change_layout a layout</code> returns a Bigarray with the specified <code>layout</code>, sharing the data with <code>a</code> (and hence having the same dimensions as <code>a</code>). No copying of elements is involved: the new array and the original array share the same storage space. The dimensions are reversed, such that <code>get v [| a; b; c |]</code> in C layout becomes <code>get v [| c+1; b+1; a+1 |]</code> in Fortran layout.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.06.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-size_in_bytes"><a href="#val-size_in_bytes" class="anchor"></a><code><span><span class="keyword">val</span> size_in_bytes : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p><code>size_in_bytes a</code> is the number of elements in <code>a</code> multiplied by <code>a</code>'s <a href="../index.html#val-kind_size_in_bytes"><code>kind_size_in_bytes</code></a>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-get"><a href="#val-get" class="anchor"></a><code><span><span class="keyword">val</span> get : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>Array3.get a x y z</code>, also written <code>a.{x,y,z}</code>, returns the element of <code>a</code> at coordinates (<code>x</code>, <code>y</code>, <code>z</code>). <code>x</code>, <code>y</code> and <code>z</code> must be within the bounds of <code>a</code>, as described for <a href="../Genarray/index.html#val-get"><code>Bigarray.Genarray.get</code></a>; otherwise, <code>Invalid_argument</code> is raised.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-set"><a href="#val-set" class="anchor"></a><code><span><span class="keyword">val</span> set : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>Array3.set a x y v</code>, or alternatively <code>a.{x,y,z} &lt;- v</code>, stores the value <code>v</code> at coordinates (<code>x</code>, <code>y</code>, <code>z</code>) in <code>a</code>. <code>x</code>, <code>y</code> and <code>z</code> must be within the bounds of <code>a</code>, as described for <a href="../Genarray/index.html#val-set"><code>Bigarray.Genarray.set</code></a>; otherwise, <code>Invalid_argument</code> is raised.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-sub_left"><a href="#val-sub_left" class="anchor"></a><code><span><span class="keyword">val</span> sub_left : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <a href="../index.html#type-c_layout">c_layout</a>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <a href="../index.html#type-c_layout">c_layout</a>)</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Extract a three-dimensional sub-array of the given three-dimensional Bigarray by restricting the first dimension. See <a href="../Genarray/index.html#val-sub_left"><code>Bigarray.Genarray.sub_left</code></a> for more details. <code>Array3.sub_left</code> applies only to arrays with C layout.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-sub_right"><a href="#val-sub_right" class="anchor"></a><code><span><span class="keyword">val</span> sub_right :
<span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <a href="../index.html#type-fortran_layout">fortran_layout</a>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span>int <span class="arrow">&#45;&gt;</span></span>
<span>int <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <a href="../index.html#type-fortran_layout">fortran_layout</a>)</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Extract a three-dimensional sub-array of the given three-dimensional Bigarray by restricting the second dimension. See <a href="../Genarray/index.html#val-sub_right"><code>Bigarray.Genarray.sub_right</code></a> for more details. <code>Array3.sub_right</code> applies only to arrays with Fortran layout.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-slice_left_1"><a href="#val-slice_left_1" class="anchor"></a><code><span><span class="keyword">val</span> slice_left_1 :
<span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <a href="../index.html#type-c_layout">c_layout</a>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span>int <span class="arrow">&#45;&gt;</span></span>
<span>int <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <a href="../index.html#type-c_layout">c_layout</a>)</span> <a href="../Array1/index.html#type-t">Array1.t</a></span></span></code></div><div class="spec-doc"><p>Extract a one-dimensional slice of the given three-dimensional Bigarray by fixing the first two coordinates. The integer parameters are the coordinates of the slice to extract. See <a href="../Genarray/index.html#val-slice_left"><code>Bigarray.Genarray.slice_left</code></a> for more details. <code>Array3.slice_left_1</code> applies only to arrays with C layout.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-slice_right_1"><a href="#val-slice_right_1" class="anchor"></a><code><span><span class="keyword">val</span> slice_right_1 :
<span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <a href="../index.html#type-fortran_layout">fortran_layout</a>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span>int <span class="arrow">&#45;&gt;</span></span>
<span>int <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <a href="../index.html#type-fortran_layout">fortran_layout</a>)</span> <a href="../Array1/index.html#type-t">Array1.t</a></span></span></code></div><div class="spec-doc"><p>Extract a one-dimensional slice of the given three-dimensional Bigarray by fixing the last two coordinates. The integer parameters are the coordinates of the slice to extract. See <a href="../Genarray/index.html#val-slice_right"><code>Bigarray.Genarray.slice_right</code></a> for more details. <code>Array3.slice_right_1</code> applies only to arrays with Fortran layout.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-slice_left_2"><a href="#val-slice_left_2" class="anchor"></a><code><span><span class="keyword">val</span> slice_left_2 : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <a href="../index.html#type-c_layout">c_layout</a>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <a href="../index.html#type-c_layout">c_layout</a>)</span> <a href="../Array2/index.html#type-t">Array2.t</a></span></span></code></div><div class="spec-doc"><p>Extract a two-dimensional slice of the given three-dimensional Bigarray by fixing the first coordinate. The integer parameter is the first coordinate of the slice to extract. See <a href="../Genarray/index.html#val-slice_left"><code>Bigarray.Genarray.slice_left</code></a> for more details. <code>Array3.slice_left_2</code> applies only to arrays with C layout.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-slice_right_2"><a href="#val-slice_right_2" class="anchor"></a><code><span><span class="keyword">val</span> slice_right_2 :
<span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <a href="../index.html#type-fortran_layout">fortran_layout</a>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span>int <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <a href="../index.html#type-fortran_layout">fortran_layout</a>)</span> <a href="../Array2/index.html#type-t">Array2.t</a></span></span></code></div><div class="spec-doc"><p>Extract a two-dimensional slice of the given three-dimensional Bigarray by fixing the last coordinate. The integer parameter is the coordinate of the slice to extract. See <a href="../Genarray/index.html#val-slice_right"><code>Bigarray.Genarray.slice_right</code></a> for more details. <code>Array3.slice_right_2</code> applies only to arrays with Fortran layout.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-blit"><a href="#val-blit" class="anchor"></a><code><span><span class="keyword">val</span> blit : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Copy the first Bigarray to the second Bigarray. See <a href="../Genarray/index.html#val-blit"><code>Bigarray.Genarray.blit</code></a> for more details.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-fill"><a href="#val-fill" class="anchor"></a><code><span><span class="keyword">val</span> fill : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Fill the given Bigarray with the given value. See <a href="../Genarray/index.html#val-fill"><code>Bigarray.Genarray.fill</code></a> for more details.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_array"><a href="#val-of_array" class="anchor"></a><code><span><span class="keyword">val</span> of_array :
<span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>)</span> <a href="../index.html#type-kind">kind</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span><span class="type-var">'c</span> <a href="../index.html#type-layout">layout</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span><span><span><span class="type-var">'a</span> array</span> array</span> array</span> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Build a three-dimensional Bigarray initialized from the given array of arrays of arrays.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-unsafe_get"><a href="#val-unsafe_get" class="anchor"></a><code><span><span class="keyword">val</span> unsafe_get : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p>Like <a href="#val-get"><code>Bigarray.Array3.get</code></a>, but bounds checking is not always performed.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-unsafe_set"><a href="#val-unsafe_set" class="anchor"></a><code><span><span class="keyword">val</span> unsafe_set : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>, <span class="type-var">'c</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Like <a href="#val-set"><code>Bigarray.Array3.set</code></a>, but bounds checking is not always performed.</p></div></div></div></body></html>