### HackerRank Python Solution - Numpy Topic - Linear Algebra

The NumPy module also comes with a number of built-in routines for linear algebra calculations. These can be found in the sub-module linalg.

linalg.det:

The linalg.det tool computes the determinant of an array.

``print numpy.linalg.det([[1 , 2], [2, 1]])       #Output : -3.0``
linalg.eig:

The linalg.eig computes the eigenvalues and right eigenvectors of a square array.

### HackerRank Python Solution - Numpy Topic - Polynomials

Poly:

The poly tool returns the coefficients of a polynomial with the given sequence of roots.

``````print numpy.poly([-1, 1, 1, 10])        #Output : [  1 -11   9  11 -10]
``````
Roots:

The roots tool returns the roots of a polynomial with the given coefficients.

### HackerRank Python Solution - Numpy Topic - Inner and Outer

Inner:

The inner tool returns the inner product of two arrays.

``````import numpy

A = numpy.array([0, 1])
B = numpy.array([3, 4])

print numpy.inner(A, B)     #Output : 4``````

### HackerRank Python Solution - Numpy Topic - Dot and Cross

Dot:

The dot tool returns the dot product of two arrays.

``````import numpy

A = numpy.array([ 1, 2 ])
B = numpy.array([ 3, 4 ])

print numpy.dot(A, B)       #Output : 11``````

### HackerRank Python Solution - Numpy Topic - Mean, Var, and Std

Mean:

The mean tool computes the arithmetic mean along the specified axis.

``````import numpy

my_array = numpy.array([ [1, 2], [3, 4] ])

print numpy.mean(my_array, axis = 0)        #Output : [ 2.  3.]
print numpy.mean(my_array, axis = 1)        #Output : [ 1.5  3.5]
print numpy.mean(my_array, axis = None)     #Output : 2.5
print numpy.mean(my_array)                  #Output : 2.5``````
By default, the axis is None. Therefore, it computes the mean of the flattened array.

### HackerRank Python Solution - Numpy Topic - Min and Max

Min:

The tool min returns the minimum value along a given axis.

``````import numpy

my_array = numpy.array([[2, 5],
[3, 7],
[1, 3],
[4, 0]])

print numpy.min(my_array, axis = 0)         #Output : [1 0]
print numpy.min(my_array, axis = 1)         #Output : [2 3 1 0]
print numpy.min(my_array, axis = None)      #Output : 0
print numpy.min(my_array)                   #Output : 0``````
By default, the axis value is None. Therefore, it finds the minimum over all the dimensions of the input array.

### HackerRank Python Solution - Numpy Topic - Sum and Prod

Sum:

The sum tool returns the sum of array elements over a given axis.

``````import numpy

my_array = numpy.array([ [1, 2], [3, 4] ])

print numpy.sum(my_array, axis = 0)         #Output : [4 6]
print numpy.sum(my_array, axis = 1)         #Output : [3 7]
print numpy.sum(my_array, axis = None)      #Output : 10
print numpy.sum(my_array)                   #Output : 10``````
By default, the axis value is None. Therefore, it performs a sum over all the dimensions of the input array.

### HackerRank Python Solution - Numpy Topic - Floor, Ceil and Rint

Floor:

The tool floor returns the floor of the input element-wise. The floor of x is the largest integer i where i<=x.

``````import numpy

my_array = numpy.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9])
print numpy.floor(my_array)         #[ 1.  2.  3.  4.  5.  6.  7.  8.  9.]``````
Ceil:

The tool ceil returns the ceiling of the input element-wise. The ceiling of x is the smallest integer i where i >= x.

### HackerRank Python Solution - Numpy Topic - Shape and Reshape

Shape:

The shape tool gives a tuple of array dimensions and can be used to change the dimensions of an array.

(a). Using shape to get array dimensions

``````import numpy

my__1D_array = numpy.array([1, 2, 3, 4, 5])
print my_1D_array.shape     #(5,) -> 1 row and 5 columns

my__2D_array = numpy.array([[1, 2],[3, 4],[6,5]])
print my_2D_array.shape     #(3, 2) -> 3 rows and 2 columns ``````

### HackerRank Python Solution - Numpy Topic - Array Mathematics

Basic mathematical functions operate elementwise on arrays. They are available both as operator overloads and as functions in the NumPy module.

``````import numpy

a = numpy.array([1,2,3,4], float)
b = numpy.array([5,6,7,8], float)

print a + b                     #[  6.   8.  10.  12.]
print numpy.add(a, b)           #[  6.   8.  10.  12.]

print a - b                     #[-4. -4. -4. -4.]
print numpy.subtract(a, b)      #[-4. -4. -4. -4.]

print a * b                     #[  5.  12.  21.  32.]
print numpy.multiply(a, b)      #[  5.  12.  21.  32.]

print a / b                     #[ 0.2         0.33333333  0.42857143  0.5       ]
print numpy.divide(a, b)        #[ 0.2         0.33333333  0.42857143  0.5       ]

print a % b                     #[ 1.  2.  3.  4.]
print numpy.mod(a, b)           #[ 1.  2.  3.  4.]

print a**b                      #[  1.00000000e+00   6.40000000e+01   2.18700000e+03   6.55360000e+04]
print numpy.power(a, b)         #[  1.00000000e+00   6.40000000e+01   2.18700000e+03   6.55360000e+04]``````

### HackerRank Python Solution - Numpy Topic - Eye and Identity

Identity:

The identity tool returns an identity array. An identity array is a square matrix with all the main diagonal elements as 1 and the rest as 0. The default type of element is float.

``````import numpy
print numpy.identity(3) #3 is for  dimension 3 X 3

#Output
[[ 1.  0.  0.]
[ 0.  1.  0.]
[ 0.  0.  1.]]``````

### HackerRank Python Solution - Numpy Topic - Zeros and Ones

Zeros:

The zeros tool returns a new array with a given shape and type filled with 0's.

``````import numpy

print numpy.zeros((1,2))                    #Default type is float
#Output : [[ 0.  0.]]

print numpy.zeros((1,2), dtype = numpy.int) #Type changes to int
#Output : [[0 0]]``````

### HackerRank Python Solution - Numpy Topic - Concatenate

Concatenate:

Two or more arrays can be concatenated together using the concatenate function with a tuple of the arrays to be joined:

``````import numpy

array_1 = numpy.array([1,2,3])
array_2 = numpy.array([4,5,6])
array_3 = numpy.array([7,8,9])

print numpy.concatenate((array_1, array_2, array_3))

#Output
[1 2 3 4 5 6 7 8 9]
``````

### HackerRank Python Solution - Numpy Topic - Transpose and Flatten

Question 2 - Transpose and Flatten

You are given an NxM integer array matrix with space-separated elements (N= rows and M= columns).
The question is to print the transpose and flatten the results.

Input Format

The first line contains the space-separated values of N and M.
The next N lines contain the space-separated elements of M columns.

### HackerRank Python Solution - Numpy Topic - Arrays

Question1 - Arrays:

Your task is to print a reversed NumPy array with the element type `float`.