Difference between revisions of "Software tutorial/Vectors and arrays"
Line 35: | Line 35: | ||
f = linspace(3.0, -4.0, 26); | f = linspace(3.0, -4.0, 26); | ||
>> size(a) | |||
ans = | |||
1 7 | |||
>> size(c) | >> size(c) | ||
ans = | ans = | ||
Line 42: | Line 45: | ||
1 26 | 1 26 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
In MATLAB, everything is an array, even a scalar is just a \(1 \times 1\) array, and vectors are either a \(1 \times n\) or \(n \times 1\) array. | |||
| width="50%" valign="top" | | | width="50%" valign="top" | | ||
Line 53: | Line 58: | ||
f = np.linspace(3.0, -4.0, 26) | f = np.linspace(3.0, -4.0, 26) | ||
>>> a.shape | |||
(7,) | |||
>>> c.shape | >>> c.shape | ||
(300, 1) | (300, 1) | ||
>>> f.shape | >>> f.shape | ||
(26,) | (26,) | ||
</syntaxhighlight> | |||
The NumPy library in Python supports two different data containers: arrays and matrices. We will not use NumPy matrices in this course, because they cannot deal with multiple dimensions (e.g. 3 dimensional arrays). And even though we will probably not use multi-dimensional arrays in this course, it is not worth learning about NumPy matrices, because they are fairly limited. So we will focus on NumPy arrays, which while a bit harder to get used to, are much more powerful than NumPy matrices. A NumPy array is roughly equivalent to a MATLAB array. | |||
One difference though with MATLAB, is that a Numpy array with one dimension, in other words a vector, has a shape property of <tt>(n,)</tt>: indicating the vector has <tt>n</tt>-elements. It is not like MATLAB where one of the dimensions is a <tt>1</tt> (one). | |||
If you require the vector to be either a row vector or a column vector, then you must do so explicitly: | |||
<syntaxhighlight lang="python"> | |||
general_vector = np.zeros(300).shape | |||
(300,) | |||
row_vector = np.zeros((300, 1)).shape | |||
(300, 1) | |||
column_vector = np.zeros((1, 300)).shape | |||
(1, 300) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Unlike MATLAB | |||
|} | |} |
Revision as of 15:50, 26 September 2010
In this section we will focus on containers for your numbers: vectors and arrays. For the purposes of this section you should use this terminology:
- Vector
- A one-dimensional list of numbers
- Array
- A multi-dimensional arrangement of numbers
- Matrix
- A two-dimensional array
In this course we will mainly use vectors and matrices, however, arrays are extremely prevalent in process modelling.
Creating vectors
We will create these vectors:
- \(a = [4.0, \, 5, \,6, \,-2,\, 3, \text{NaN}, \infty]\)
- \(b = [0, 0, \ldots, 0]\) with 300 columns of zeros, one row
- \(c = [1, 1, \ldots, 1]^T\) with 300 rows of ones in a single column
- \(d = [2.6, 2.6, \ldots, 2.6]^T\) with 300 entries of 2.6 in one column
- \(e = [4.5, 4.6, 4.7, \ldots, 10.5 \), equi-spaced entries
- \(f = \) 26 equi-spaced entries starting from 3.0, going down -4.0
MATLAB | Python |
---|---|
a = [4, 5, 6, -2, 3, NaN, inf];
b = zeros(1, 300);
c = ones(300, 1);
d = ones(300, 1) .* 2.6;
e = 4.5:0.1:10.5;
f = linspace(3.0, -4.0, 26);
>> size(a)
ans =
1 7
>> size(c)
ans =
300 1
>> size(f)
ans =
1 26
In MATLAB, everything is an array, even a scalar is just a \(1 \times 1\) array, and vectors are either a \(1 \times n\) or \(n \times 1\) array. |
import numpy as np
a = np.array([4, 5, 6, -2, 3, np.nan, np.inf])
b = np.zeros((1, 300)) # note the extra brackets!
c = np.ones((300, 1))
d = np.ones((300, 1)) * 2.6
e = np.arange(4.5, 10.5001, 0.1); # type help(np.arange) to understand why
f = np.linspace(3.0, -4.0, 26)
>>> a.shape
(7,)
>>> c.shape
(300, 1)
>>> f.shape
(26,)
The NumPy library in Python supports two different data containers: arrays and matrices. We will not use NumPy matrices in this course, because they cannot deal with multiple dimensions (e.g. 3 dimensional arrays). And even though we will probably not use multi-dimensional arrays in this course, it is not worth learning about NumPy matrices, because they are fairly limited. So we will focus on NumPy arrays, which while a bit harder to get used to, are much more powerful than NumPy matrices. A NumPy array is roughly equivalent to a MATLAB array. One difference though with MATLAB, is that a Numpy array with one dimension, in other words a vector, has a shape property of (n,): indicating the vector has n-elements. It is not like MATLAB where one of the dimensions is a 1 (one). If you require the vector to be either a row vector or a column vector, then you must do so explicitly: general_vector = np.zeros(300).shape
(300,)
row_vector = np.zeros((300, 1)).shape
(300, 1)
column_vector = np.zeros((1, 300)).shape
(1, 300)
Unlike MATLAB
|