Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In Python NumPy what is a dimension and axis?

Tags:

python

numpy

I am coding with Pythons NumPy module. If coordinates of a point in 3D space are described as [1, 2, 1], wouldn't that be three dimensions, three axis, a rank of three? Or if that is one dimension then shouldn't it be points (plural), not point?

Here is the documentation:

In Numpy dimensions are called axes. The number of axes is rank. For example, the coordinates of a point in 3D space [1, 2, 1] is an array of rank 1, because it has one axis. That axis has a length of 3.

Source: http://wiki.scipy.org/Tentative_NumPy_Tutorial

like image 835
davidjhp Avatar asked Oct 15 '13 19:10

davidjhp


People also ask

What is a axis in NumPy?

Axes are defined for arrays with more than one dimension. A 2-dimensional array has two corresponding axes: the first running vertically downwards across rows (axis 0), and the second running horizontally across columns (axis 1). Many operation can take place along one of these axes.

What is axis in NumPy stack?

NumPy: stack() function The stack() function is used to join a sequence of arrays along a new axis. The axis parameter specifies the index of the new axis in the dimensions of the result. For example, if axis=0 it will be the first dimension and if axis=-1 it will be the last dimension.

What is a 1 dimensional NumPy array?

One dimensional array contains elements only in one dimension. In other words, the shape of the NumPy array should contain only one value in the tuple.

How do I show dimensions in NumPy?

Size of the first dimension of the NumPy array: len() len() is the Python built-in function that returns the number of elements in a list or the number of characters in a string. For numpy. ndarray , len() returns the size of the first dimension.


1 Answers

In numpy arrays, dimensionality refers to the number of axes needed to index it, not the dimensionality of any geometrical space. For example, you can describe the locations of points in 3D space with a 2D array:

array([[0, 0, 0],        [1, 2, 3],        [2, 2, 2],        [9, 9, 9]]) 

Which has shape of (4, 3) and dimension 2. But it can describe 3D space because the length of each row (axis 1) is three, so each row can be the x, y, and z component of a point's location. The length of axis 0 indicates the number of points (here, 4). However, that is more of an application to the math that the code is describing, not an attribute of the array itself. In mathematics, the dimension of a vector would be its length (e.g., x, y, and z components of a 3d vector), but in numpy, any "vector" is really just considered a 1d array of varying length. The array doesn't care what the dimension of the space (if any) being described is.

You can play around with this, and see the number of dimensions and shape of an array like so:

In [262]: a = np.arange(9)  In [263]: a Out[263]: array([0, 1, 2, 3, 4, 5, 6, 7, 8])  In [264]: a.ndim    # number of dimensions Out[264]: 1  In [265]: a.shape Out[265]: (9,)  In [266]: b = np.array([[0,0,0],[1,2,3],[2,2,2],[9,9,9]])  In [267]: b Out[267]:  array([[0, 0, 0],        [1, 2, 3],        [2, 2, 2],        [9, 9, 9]])  In [268]: b.ndim Out[268]: 2  In [269]: b.shape Out[269]: (4, 3) 

Arrays can have many dimensions, but they become hard to visualize above two or three:

In [276]: c = np.random.rand(2,2,3,4)  In [277]: c Out[277]:  array([[[[ 0.33018579,  0.98074944,  0.25744133,  0.62154557],          [ 0.70959511,  0.01784769,  0.01955593,  0.30062579],          [ 0.83634557,  0.94636324,  0.88823617,  0.8997527 ]],          [[ 0.4020885 ,  0.94229555,  0.309992  ,  0.7237458 ],          [ 0.45036185,  0.51943908,  0.23432001,  0.05226692],          [ 0.03170345,  0.91317231,  0.11720796,  0.31895275]]],          [[[ 0.47801989,  0.02922993,  0.12118226,  0.94488471],          [ 0.65439109,  0.77199972,  0.67024853,  0.27761443],          [ 0.31602327,  0.42678546,  0.98878701,  0.46164756]],          [[ 0.31585844,  0.80167337,  0.17401188,  0.61161196],          [ 0.74908902,  0.45300247,  0.68023488,  0.79672751],          [ 0.23597218,  0.78416727,  0.56036792,  0.55973686]]]])  In [278]: c.ndim Out[278]: 4  In [279]: c.shape Out[279]: (2, 2, 3, 4) 
like image 89
askewchan Avatar answered Sep 19 '22 18:09

askewchan