.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_data_analysis/manage_data_and_samples/plot_quick_start_point_and_sample.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_data_analysis_manage_data_and_samples_plot_quick_start_point_and_sample.py: A quick start guide to the `Point` and `Sample` classes ======================================================= .. GENERATED FROM PYTHON SOURCE LINES 6-10 Abstract -------- In this example, we present the `Point` and `Sample` classes, two fundamental objects in the library. We present the principles behind these classes and the way to create and use these objects. We show how to extract a row or a column with the slicing operator. We show how these objects interacts with Python variables and with the `numpy` module. .. GENERATED FROM PYTHON SOURCE LINES 12-20 Introduction ------------ Two fundamental objects in the library are: * `Point`: a multidimensional point in :math:`D` dimensions (:math:`\in \mathbb{R}^D`) ; * `Sample`: a multivariate sample made of :math:`N` points in :math:`D` dimensions. .. GENERATED FROM PYTHON SOURCE LINES 22-26 .. code-block:: default import numpy as np import openturns as ot ot.Log.Show(ot.Log.NONE) .. GENERATED FROM PYTHON SOURCE LINES 27-36 The `Point` class ----------------- In this section, we see how to: * create a point in :math:`\mathbb{R}^3`, * access its components, * update its components. .. GENERATED FROM PYTHON SOURCE LINES 38-39 By default, points are filled with zeros. .. GENERATED FROM PYTHON SOURCE LINES 41-44 .. code-block:: default p = ot.Point(3) p .. raw:: html

[0,0,0]



.. GENERATED FROM PYTHON SOURCE LINES 45-46 The following statement returns the value of the second component (with index 1). Python beginners should remember that Python indices start at zero. .. GENERATED FROM PYTHON SOURCE LINES 48-50 .. code-block:: default p[1] .. rst-class:: sphx-glr-script-out Out: .. code-block:: none 0.0 .. GENERATED FROM PYTHON SOURCE LINES 51-52 The following statements sets the second component. .. GENERATED FROM PYTHON SOURCE LINES 54-57 .. code-block:: default p[1] = 2 p .. raw:: html

[0,2,0]



.. GENERATED FROM PYTHON SOURCE LINES 58-60 .. code-block:: default p.getDimension() .. rst-class:: sphx-glr-script-out Out: .. code-block:: none 3 .. GENERATED FROM PYTHON SOURCE LINES 61-73 The `Sample` class ------------------ The `Sample` class represents a multivariate sample made of :math:`N` points in :math:`\mathbb{R}^D`. * :math:`D` is the *dimension* of the sample, * :math:`N` is the *size* of the sample. A `Sample` can be seen as an array of with :math:`N` rows and :math:`D` columns. *Remark.* The `ProcessSample` class can be used to manage a sample of stochastic processes. .. GENERATED FROM PYTHON SOURCE LINES 75-76 The script below creates a `Sample` with size :math:`N=5` and dimension :math:`D=3`. .. GENERATED FROM PYTHON SOURCE LINES 78-81 .. code-block:: default data = ot.Sample(5, 3) data .. raw:: html
v0v1v2
0000
1000
2000
3000
4000


.. GENERATED FROM PYTHON SOURCE LINES 82-84 .. code-block:: default data.getSize() .. rst-class:: sphx-glr-script-out Out: .. code-block:: none 5 .. GENERATED FROM PYTHON SOURCE LINES 85-87 .. code-block:: default data.getDimension() .. rst-class:: sphx-glr-script-out Out: .. code-block:: none 3 .. GENERATED FROM PYTHON SOURCE LINES 88-89 The following statement sets the third component (with index 2) of the fourth point (with index 3) in the `Sample`. .. GENERATED FROM PYTHON SOURCE LINES 91-94 .. code-block:: default data[3, 2] = 32 data .. raw:: html
v0v1v2
0000
1000
2000
30032
4000


.. GENERATED FROM PYTHON SOURCE LINES 95-99 Get a row or a column of a `Sample` ----------------------------------- As with `numpy` arrays, we can extract a row or a column with the `:` slicing operator. As a reminder for Python beginners, *slicing* is the fact of extracting a part of an array with one single statement; this avoids `for` loops and improves performance and readability. .. GENERATED FROM PYTHON SOURCE LINES 101-104 .. code-block:: default row = data[3, :] row .. raw:: html

[0,0,32]



.. GENERATED FROM PYTHON SOURCE LINES 105-107 .. code-block:: default print(type(row)) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 108-111 .. code-block:: default column = data[:, 2] column .. raw:: html
v2
00
10
20
332
40


.. GENERATED FROM PYTHON SOURCE LINES 112-114 .. code-block:: default print(type(column)) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 115-121 We see that: * the `row` is a `Point`, * the `column` is a `Sample`. This is consistent with the fact that, in a dimension :math:`D` `Sample`, a row is a :math:`D`-dimensional `Point`. .. GENERATED FROM PYTHON SOURCE LINES 123-124 The following statement extracts several columns (with indices 0 and 2) and creates a new `Sample`. .. GENERATED FROM PYTHON SOURCE LINES 126-128 .. code-block:: default data.getMarginal([0, 2]) .. raw:: html
v0v1
000
100
200
3032
400


.. GENERATED FROM PYTHON SOURCE LINES 129-130 Slicing can also be used to set a `Sample` row or column. .. GENERATED FROM PYTHON SOURCE LINES 132-139 .. code-block:: default sample = ot.Sample([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]]) p = [8.0, 10.0] sample[2, :] = p sample .. raw:: html
v0v1
012
134
2810


.. GENERATED FROM PYTHON SOURCE LINES 140-149 .. code-block:: default sample = ot.Sample([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]]) s = ot.Sample([[3.0], [5.0], [7.0]]) sample[:, 1] = s sample .. raw:: html
v0v1
013
135
257


.. GENERATED FROM PYTHON SOURCE LINES 150-154 Create a `Point` or a `Sample` from a Python list ------------------------------------------------- The following statement creates a `Point` from a Python list. .. GENERATED FROM PYTHON SOURCE LINES 156-159 .. code-block:: default p1 = ot.Point([2, 3]) p1 .. raw:: html

[2,3]



.. GENERATED FROM PYTHON SOURCE LINES 160-163 .. code-block:: default p2 = ot.Point(range(2)) p2 .. raw:: html

[0,1]



.. GENERATED FROM PYTHON SOURCE LINES 164-167 The first useful *Pythonism* that we will review is the *list comprehension*. This creates a list from a `for` loop. This kind of statements is often used in the the examples, so that they can be as short as possible. In the following statement, we create a point by iterating over the components of a `Point`. .. GENERATED FROM PYTHON SOURCE LINES 169-172 .. code-block:: default p3 = ot.Point([i*i for i in p1]) p3 .. raw:: html

[4,9]



.. GENERATED FROM PYTHON SOURCE LINES 173-176 The second useful *Pythonism* is the repetition with the `*` operator. The following statements creates a list with three 5s. .. GENERATED FROM PYTHON SOURCE LINES 178-181 .. code-block:: default p4 = [5] * 3 p4 .. rst-class:: sphx-glr-script-out Out: .. code-block:: none [5, 5, 5] .. GENERATED FROM PYTHON SOURCE LINES 182-183 We can also create a `Sample` from a list of `Point`. .. GENERATED FROM PYTHON SOURCE LINES 185-188 .. code-block:: default sample = ot.Sample([p1, p2, p3]) sample .. raw:: html
v0v1
023
101
249


.. GENERATED FROM PYTHON SOURCE LINES 189-190 We can loop over the points in a sample, using a list comprehension. In the following example, we compute the Euclidian norm of the points in the previous sample. .. GENERATED FROM PYTHON SOURCE LINES 192-194 .. code-block:: default [point.norm() for point in sample] .. rst-class:: sphx-glr-script-out Out: .. code-block:: none [3.605551275463989, 1.0, 9.848857801796104] .. GENERATED FROM PYTHON SOURCE LINES 195-196 We can also create a `Sample` based on a `Point`, repeated three times. .. GENERATED FROM PYTHON SOURCE LINES 198-201 .. code-block:: default sample = ot.Sample([p4] * 3) sample .. raw:: html
v0v1v2
0555
1555
2555


.. GENERATED FROM PYTHON SOURCE LINES 202-203 A nested list of floats is the easiest way to create a non-trivial `Sample`. .. GENERATED FROM PYTHON SOURCE LINES 205-208 .. code-block:: default sample = ot.Sample([[0, 1], [2, 3], [4, 5]]) sample .. raw:: html
v0v1
001
123
245


.. GENERATED FROM PYTHON SOURCE LINES 209-213 Interactions with Numpy ----------------------- The Python classes defined in Python modules are unknown to OpenTURNS and hence cannot be used by the library. This is why it is useful to know how to convert to and from more basic Python variable types, especially Numpy arrays. .. GENERATED FROM PYTHON SOURCE LINES 215-216 The following statement creates a `Sample` and converts it into a bidimensional Numpy `array`. .. GENERATED FROM PYTHON SOURCE LINES 218-222 .. code-block:: default sample = ot.Sample(5, 3) array = np.array(sample) array .. rst-class:: sphx-glr-script-out Out: .. code-block:: none array([[0., 0., 0.], [0., 0., 0.], [0., 0., 0.], [0., 0., 0.], [0., 0., 0.]]) .. GENERATED FROM PYTHON SOURCE LINES 223-225 .. code-block:: default type(array) .. GENERATED FROM PYTHON SOURCE LINES 226-227 Conversely, the following script creates a Numpy `array`, then converts it into a `Sample`. .. GENERATED FROM PYTHON SOURCE LINES 229-233 .. code-block:: default array = 3.14 * np.ones((5, 3)) sample = ot.Sample(array) sample .. raw:: html
v0v1v2
03.143.143.14
13.143.143.14
23.143.143.14
33.143.143.14
43.143.143.14


.. GENERATED FROM PYTHON SOURCE LINES 234-236 .. code-block:: default sample.getSize() .. rst-class:: sphx-glr-script-out Out: .. code-block:: none 5 .. GENERATED FROM PYTHON SOURCE LINES 237-239 .. code-block:: default sample.getDimension() .. rst-class:: sphx-glr-script-out Out: .. code-block:: none 3 .. GENERATED FROM PYTHON SOURCE LINES 240-250 There is an ambiguous situation: a `Sample` based on several scalar values. For example, is a `Sample` based on 5 values: * a `Sample` with size 5 in 1 dimension or * a `Sample` with size 1 in 5 dimensions? In order to solve the case, we can use the second input argument of the `Sample` constructor, which specifies the dimension. The following statement creates an array containing 5 values from 0 to 1. .. GENERATED FROM PYTHON SOURCE LINES 252-255 .. code-block:: default u = np.linspace(0, 1, 5) u .. rst-class:: sphx-glr-script-out Out: .. code-block:: none array([0. , 0.25, 0.5 , 0.75, 1. ]) .. GENERATED FROM PYTHON SOURCE LINES 256-257 Choice A: we create a `Sample` with size 5 in 1 dimension. .. GENERATED FROM PYTHON SOURCE LINES 259-262 .. code-block:: default sample = ot.Sample([[ui] for ui in u]) sample .. raw:: html
v0
00
10.25
20.5
30.75
41


.. GENERATED FROM PYTHON SOURCE LINES 263-264 Choice B: we create a `Sample` with size 1 in 5 dimensions. .. GENERATED FROM PYTHON SOURCE LINES 266-269 .. code-block:: default sample = ot.Sample([u[i:i+5] for i in range(len(u)//5)]) sample .. raw:: html
v0v1v2v3v4
000.250.50.751


.. GENERATED FROM PYTHON SOURCE LINES 270-272 If we do not set the optional `size` parameter, the library cannot solve the case and an InvalidArgumentException is generated. .. GENERATED FROM PYTHON SOURCE LINES 274-277 Generates an expected exception TypeError: InvalidArgumentException : Invalid array dimension: 1 sample = ot.Sample (u) .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 0.010 seconds) .. _sphx_glr_download_auto_data_analysis_manage_data_and_samples_plot_quick_start_point_and_sample.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_quick_start_point_and_sample.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_quick_start_point_and_sample.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_