Skip to content
Related Articles

Related Articles

Improve Article

NumPy for Matlab users

  • Last Updated : 21 Aug, 2020

NumPy and Matlab are very similar to each other, both are made for mathematical and scientific calculations.  But still there are many differences, numPy is made to do scientific calculations with python using arrays while Matlab uses matrices. This article will give us a deep idea about similarities and differences between NumPy and Matlab and how can a Matlab user become proficient in NumPy.

NumPy uses both arrays and matrices. NumPy provides a special type of matrix, numpy.matrix and it is a subclass of ndarray (that is n dimensional array). The basic datatype of NumPy is n dimensional arrays in which operations are performed element wise. one has to use specific functions to perform linear algebra operations in  NumPy. While the basic datatype of Matlab is multidimensional array of double precision floating point numbers. The operations on instances of such data types is performed like matrices in linear algebra, most of the in built functions in Matlab takes and returns such type of arrays. NumPy was designed for python which is a general purpose programming language and it uses 0 (zero) based indexing. While Matlab’s scripting language is created for doing linear algebra operations but the syntax of Matlab for some array manipulation is more complex then NumPy’s. Also Matlab uses 1 (one) based indexing, means first element of the array is indexed at 1. 

From this basic talk, the question arises which should we use arrays or matrix?

NumPy provides both array class and matrix class, array class provides basic n dimensional array computations while matrix class provides linear algebra computations specifically. Some of the key differences between array objects and matrix objects are :

  • Handling of high dimensional arrays :-
    • Array objects can have more then two dimensions while
    • Matrix objects have only two dimensions.
  • Handling of vectors (one dimensional arrays) :-
    • In array objects, one dimensional arrays will always have single dimension. For arrays, N*1 and 1*N are two dimensional arrays not single dimension. Array operations on one dimensional array will always return 1-D array itself.
    • While in matrix the single dimension array of size N is treated as and by default converted into N*1 or 1*N matrix. Any operation on it will always return a two dimensional array.
  • Operators ‘*’ and ‘@’ :-
    • In arrays, ‘ * ‘ operator is used for element wise multiplications or using the function multiply() and ‘ @ ‘ is used for matrix multiplication or using the function dot().
    • In matrix, matrix multiplication is done using ‘ * ‘ operator, and for element wise multiplication have to use multiply() function.
  • Constructor :-
    • In arrays, constructors initializes with python sequences. eg- array([[1, 2, 3], [4, 5, 6]])
    • In matrix, constructor takes string as the initializer. eg- matrix(“[1 2 3; 4 5 6]”)

Some common Matlab equivalents for NumPy :

For General Purpose :

MatlabNumPyExplanation
type(func)source(func) or func??(for python)prints source of the function
a | | b a or bLogical OR operator
epsnp.spacing(1)Distance between 1 and nearest floating point number
1 * i, 1 * j, 1i, 1j1jComplex Numbers
help(func)info(func) or help(func) (for python)Provides for the given func function
a && ba and bLogical AND operator

For Linear Algebra :



MatlabNumPyExplanation
size(m)shape(a) or a.shape(a)Returns the size of matrix
[1 2 3; 7 8 9]array([[1, 2, 3], [7, 8, 9]])2×3 matrix
m(end)m[-1]Last element in 1xn matrix 
m(3, 4)m[3][4]Access element in 3rd row, 4th element
m(2 : )m[1] or m[1, : ]

Entire second row of matrix, as matlab’s first element   

is indexed at 1 and that of numpy is indexed at 0.

m(1 : 5, : )m[0 : 5] or m[ : 5]returns first five rows of matrix m
m.’m.transpose() or a.TTranspose of matrix m
m’m.conj().transpose() or m.conj().TConjugate transpose of matrix m
m.^3m**3Element wise exponent of matrix m.
m .* nm *nElement wise matrix multiply
m * nm @ nMatrix multiplication (algebric operation)
a ./ ba / bElement wise divide of matrix m and n.
find(m > 2)nonzero(m > 2)Find the indices whose elements are greater then 2
m( : ) = 1m[ : ] = 1Set all the elements of matrix m to 1
a = ba = b.copy()

Assign b into a directly in Matlab while numpy assigns 

through reference.

zeros(2, 4)zeros((2, 4))

two dimensional array with 2 rows and 4 columns full 

with all elements as 0 (zero).

zeros(1, 3, 5)zeros((1, 3, 5))1x3x5 three dimensional array with all elements zero.
rand(2, 4)randomn.rand(2, 4)2×4 two dimensional array with random elements.
ones(2, 4)ones((2, 4))

2×4 two dimensional array with all elements floating 

point 1.



eye(4)eye(4)returns 4×4 identity matrix
max(max(m))max(m)returns maximum element present in matrix m
a | blogical_or(a, b)element by element logical OR operation
a & blogical_and(a, b)element by element logical AND operation
bitor(a, b)a | bBitwise logical OR operator of matrices a and b
bitand(a, b)a & bbitwise logical AND operator of matrices a and b
sort(m)sort(m) or m.sort()sort the matrix m
ifft(m)ifft(m)Fourier transform of matrix m.
a\b

linalg.solve(a, b) if a is square matrix

else, linalg.lstsq(a, b)

solve the equation a x = b, for x
inv(m)linalg.inv(m)returns inverse of square matrix m
pinv(m)linalg.pinv(m)returns pseudo inverse of matrix m
max(m, n)maximum(m, n)

returns max element from each pair by comparing 

m and n element by element.

max(m)m.max(0)

returns maximum element from each column of 

matrix m.

linspace(a, b, m)linspace(a,, b, m)

returns m equally spaced elements between a and b 

(both inclusive)

My Personal Notes arrow_drop_up
Recommended Articles
Page :