Arrays
Using reversed()
Copy import numpy
def arrays ( arr ):
return numpy . array ( list ( reversed (arr)), float )
arr = input (). strip (). split ( ' ' )
result = arrays (arr)
print (result)
Using numpy.flipud()
Copy import numpy
def arrays ( arr ):
return numpy . flipud (numpy. array (arr, float ))
arr = input (). strip (). split ( ' ' )
result = arrays (arr)
print (result)
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
Copy 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
(b). Using shape to change array dimensions
Copy import numpy
change_array = numpy . array ([ 1 , 2 , 3 , 4 , 5 , 6 ])
change_array . shape = ( 3 , 2 )
print change_array
#Output
[[ 1 2 ]
[ 3 4 ]
[ 5 6 ]]
Reshape
The reshape tool gives a new shape to an array without changing its data. It creates a new array and does not modify the original array itself.
Copy import numpy
my_array = numpy . array ([ 1 , 2 , 3 , 4 , 5 , 6 ])
print numpy . reshape (my_array,( 3 , 2 ))
#Output
[[ 1 2 ]
[ 3 4 ]
[ 5 6 ]]
Task
Copy import numpy
print (numpy. reshape (numpy. array ( list ( map ( int , input (). split ()))), ( 3 , 3 )))
Transpose and Flatten
Transpose
We can generate the transposition of an array using the tool numpy.transpose
.
It will not affect the original array, but it will create a new array.
Copy import numpy
my_array = numpy . array ([[ 1 , 2 , 3 ],
[ 4 , 5 , 6 ]])
print numpy . transpose (my_array)
#Output
[[ 1 4 ]
[ 2 5 ]
[ 3 6 ]]
Flatten
The tool flatten creates a copy of the input array flattened to one dimension.
Copy import numpy
my_array = numpy . array ([[ 1 , 2 , 3 ],
[ 4 , 5 , 6 ]])
print my_array . flatten ()
#Output
[ 1 2 3 4 5 6 ]
Task
Copy import numpy
n , m = map ( int , input (). split ())
array = numpy . array ([ list ( map ( int , input (). split ())) for _ in range (n)])
print (numpy. transpose (array))
print (array. flatten ())
Concatenate
Two or more arrays can be concatenated together using the concatenate function with a tuple of the arrays to be joined:
Copy 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 ]
If an array has more than one dimension, it is possible to specify the axis along which multiple arrays are concatenated. By default, it is along the first dimension.
Copy import numpy
array_1 = numpy . array ([[ 1 , 2 , 3 ],[ 0 , 0 , 0 ]])
array_2 = numpy . array ([[ 0 , 0 , 0 ],[ 7 , 8 , 9 ]])
print numpy . concatenate ((array_1, array_2), axis = 1 )
#Output
[[ 1 2 3 0 0 0 ]
[ 0 0 0 7 8 9 ]]
Task
Copy import numpy
n , m , p = map ( int , input (). split ())
arr_n = numpy . array ([ list ( map ( int , input (). split ())) for _ in range (n)])
arr_m = numpy . array ([ list ( map ( int , input (). split ())) for _ in range (m)])
print (numpy. concatenate ((arr_n, arr_m)))
Zeroes and Ones
The zeros tool returns a new array with a given shape and type filled with 's.
Copy 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]]
The ones tool returns a new array with a given shape and type filled with 's.
Copy import numpy
print numpy . ones (( 1 , 2 )) #Default type is float
#Output : [[ 1. 1.]]
print numpy . ones (( 1 , 2 ), dtype = numpy.int) #Type changes to int
#Output : [[1 1]]
Task
Copy import numpy
inputs = tuple ( map ( int , input (). split ()))
print (numpy. zeros (inputs, int ))
print (numpy. ones (inputs, int ))
Eye and Identity
The identity tool returns an identity array. An identity array is a square matrix with all the main diagonal elements as and the rest as . The default type of elements is float.
Copy import numpy
print numpy . identity ( 3 ) #3 is for dimension 3 X 3
#Output
[[ 1 . 0 . 0 . ]
[ 0 . 1 . 0 . ]
[ 0 . 0 . 1 . ]]
The eye tool returns a 2-D array with 's as the diagonal and 's elsewhere. The diagonal can be main, upper or lower depending on the optional parameter . A positive is for the upper diagonal, a negative is for the lower, and a (default) is for the main diagonal.
Copy import numpy
print numpy . eye ( 8 , 7 , k = 1 ) # 8 X 7 Dimensional array with first upper diagonal 1.
#Output
[[ 0 . 1 . 0 . 0 . 0 . 0 . 0 . ]
[ 0 . 0 . 1 . 0 . 0 . 0 . 0 . ]
[ 0 . 0 . 0 . 1 . 0 . 0 . 0 . ]
[ 0 . 0 . 0 . 0 . 1 . 0 . 0 . ]
[ 0 . 0 . 0 . 0 . 0 . 1 . 0 . ]
[ 0 . 0 . 0 . 0 . 0 . 0 . 1 . ]
[ 0 . 0 . 0 . 0 . 0 . 0 . 0 . ]
[ 0 . 0 . 0 . 0 . 0 . 0 . 0 . ]]
print numpy . eye ( 8 , 7 , k = - 2 ) # 8 X 7 Dimensional array with second lower diagonal 1.
Task
Copy import numpy
numpy . set_printoptions (legacy = '1.13' )
n , m = map ( int , input (). split ())
print (numpy. eye (n, m, k = 0 ))
Array Mathematics
Basic mathematical functions operate element-wise on arrays. They are available both as operator overloads and as functions in the NumPy module.
Copy 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]
Copy import numpy
n , m = map ( int , input (). split ())
A = numpy . array ([ list ( map ( int , input (). split ())) for _ in range (n)])
B = numpy . array ([ list ( map ( int , input (). split ())) for _ in range (n)])
print (numpy. add (A, B))
print (numpy. subtract (A, B))
print (numpy. multiply (A, B))
print (numpy. floor_divide (A, B))
print (numpy. mod (A, B))
print (numpy. power (A, B))
Floor, Ceil and Rint
The tool floor returns the floor of the input element-wise.
The floor of is the largest integer where .
Copy 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.]
The tool ceil returns the ceiling of the input element-wise.
The ceiling of is the smallest integer where .
Copy 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 . ceil (my_array) #[ 2. 3. 4. 5. 6. 7. 8. 9. 10.]
The rint tool rounds to the nearest integer of input element-wise.
Copy 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 . rint (my_array) #[ 1. 2. 3. 4. 6. 7. 8. 9. 10.]
Task
Copy import numpy
numpy . set_printoptions (legacy = '1.13' )
A = numpy . array ( list ( map ( float , input (). split ())))
print (numpy. floor (A))
print (numpy. ceil (A))
print (numpy. rint (A))
Sum and Prod
The sum tool returns the sum of array elements over a given axis.
Copy 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.
The prod tool returns the product of array elements over a given axis.
Copy import numpy
my_array = numpy . array ([ [ 1 , 2 ], [ 3 , 4 ] ])
print numpy . prod (my_array, axis = 0 ) #Output : [3 8]
print numpy . prod (my_array, axis = 1 ) #Output : [ 2 12]
print numpy . prod (my_array, axis = None ) #Output : 24
print numpy . prod (my_array) #Output : 24
By default, the axis value is None
. Therefore, it performs the product over all the dimensions of the input array.
Task
Copy import numpy
n , m = map ( int , input (). split ())
arr = numpy . array ([ list ( map ( int , input (). split ())) for _ in range (n)])
print (numpy. product (numpy. sum (arr, axis = 0 ), axis = 0 ))
Min and Max
The tool min returns the minimum value along a given axis.
Copy 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.
The tool max returns the maximum value along a given axis.
Copy import numpy
my_array = numpy . array ([[ 2 , 5 ],
[ 3 , 7 ],
[ 1 , 3 ],
[ 4 , 0 ]])
print numpy . max (my_array, axis = 0 ) #Output : [4 7]
print numpy . max (my_array, axis = 1 ) #Output : [5 7 3 4]
print numpy . max (my_array, axis = None ) #Output : 7
print numpy . max (my_array) #Output : 7
By default, the axis value is None
. Therefore, it finds the maximum over all the dimensions of the input array.
Task
Copy import numpy
n , m = map ( int , input (). split ())
arr = numpy . array ([ list ( map ( int , input (). split ())) for _ in range (n)])
print (numpy. max (numpy. min (arr, axis = 1 ), axis = 0 ))
Mean, Var, and Std
The mean tool computes the arithmetic mean along the specified axis.
Copy 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.
The var tool computes the arithmetic variance along the specified axis.
Copy import numpy
my_array = numpy . array ([ [ 1 , 2 ], [ 3 , 4 ] ])
print numpy . var (my_array, axis = 0 ) #Output : [ 1. 1.]
print numpy . var (my_array, axis = 1 ) #Output : [ 0.25 0.25]
print numpy . var (my_array, axis = None ) #Output : 1.25
print numpy . var (my_array) #Output : 1.25
By default, the axis is None
. Therefore, it computes the variance of the flattened array.
The std tool computes the arithmetic standard deviation along the specified axis.
Copy import numpy
my_array = numpy . array ([ [ 1 , 2 ], [ 3 , 4 ] ])
print numpy . std (my_array, axis = 0 ) #Output : [ 1. 1.]
print numpy . std (my_array, axis = 1 ) #Output : [ 0.5 0.5]
print numpy . std (my_array, axis = None ) #Output : 1.11803398875
print numpy . std (my_array) #Output : 1.11803398875
By default, the axis is None
. Therefore, it computes the standard deviation of the flattened array.
Task
Copy import numpy
n , m = map ( int , input (). split ())
arr = numpy . array ([ list ( map ( int , input (). split ())) for _ in range (n)])
print (numpy. mean (arr, axis = 1 ))
print (numpy. var (arr, axis = 0 ))
print ( round (numpy. std (arr), 11 ))
Dot and Cross
The dot tool returns the dot product of two arrays.
Copy import numpy
A = numpy . array ([ 1 , 2 ])
B = numpy . array ([ 3 , 4 ])
print numpy . dot (A, B) #Output : 11
The cross tool returns the cross product of two arrays.
Copy import numpy
A = numpy . array ([ 1 , 2 ])
B = numpy . array ([ 3 , 4 ])
print numpy . cross (A, B) #Output : -2
Task
Copy import numpy
n = int ( input ())
A = numpy . array ([ list ( map ( int , input (). split ())) for _ in range (n)])
B = numpy . array ([ list ( map ( int , input (). split ())) for _ in range (n)])
print (numpy. dot (A, B))
Inner and Outer
The inner tool returns the inner product of two arrays.
Copy import numpy
A = numpy . array ([ 0 , 1 ])
B = numpy . array ([ 3 , 4 ])
print numpy . inner (A, B) #Output : 4
The outer tool returns the outer product of two arrays.
Copy import numpy
A = numpy . array ([ 0 , 1 ])
B = numpy . array ([ 3 , 4 ])
print numpy . outer (A, B) #Output : [[0 0]
# [3 4]]
Task
Copy import numpy
A = numpy . array ( list ( map ( int , input (). split ())))
B = numpy . array ( list ( map ( int , input (). split ())))
print (numpy. inner (A, B))
print (numpy. outer (A, B))
Polynomials
The poly tool returns the coefficients of a polynomial with the given sequence of roots.
Copy print numpy . poly ([ - 1 , 1 , 1 , 10 ]) #Output : [ 1 -11 9 11 -10]
The roots tool returns the roots of a polynomial with the given coefficients.
Copy print numpy . roots ([ 1 , 0 , - 1 ]) #Output : [-1. 1.]
The polyint tool returns an antiderivative (indefinite integral) of a polynomial.
Copy print numpy . polyint ([ 1 , 1 , 1 ]) #Output : [ 0.33333333 0.5 1. 0. ]
The polyder tool returns the derivative of the specified order of a polynomial.
Copy print numpy . polyder ([ 1 , 1 , 1 , 1 ]) #Output : [3 2 1]
The polyval tool evaluates the polynomial at specific value.
Copy print numpy . polyval ([ 1 , - 2 , 0 , 2 ], 4 ) #Output : 34
The polyfit tool fits a polynomial of a specified order to a set of data using a least-squares approach.
Copy print numpy . polyfit ([ 0 , 1 , - 1 , 2 , - 2 ], [ 0 , 1 , 1 , 4 , 4 ], 2 )
#Output : [ 1.00000000e+00 0.00000000e+00 -3.97205465e-16]
The functions polyadd , polysub , polymul , and polydiv also handle proper addition, subtraction, multiplication, and division of polynomial coefficients, respectively.
Task
Copy import numpy
p = list ( map ( float , input (). split ()))
x = int ( input ())
print (numpy. polyval (p, x))
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 .
The linalg.det tool computes the determinant of an array.
Copy print numpy . linalg . det ([[ 1 , 2 ], [ 2 , 1 ]]) #Output : -3.0
The linalg.eig computes the eigenvalues and right eigenvectors of a square array.
Copy vals , vecs = numpy . linalg . eig ([[ 1 , 2 ], [ 2 , 1 ]])
print vals #Output : [ 3. -1.]
print vecs #Output : [[ 0.70710678 -0.70710678]
# [ 0.70710678 0.70710678]]
The linalg.inv tool computes the (multiplicative) inverse of a matrix.
Copy print numpy.linalg.inv([[1 , 2], [2, 1]]) #Output : [[-0.33333333 0.66666667]
# [ 0.66666667 -0.33333333]]
Other routines can be found here
Task
Copy import numpy
n = int(input())
arr = numpy.array([list(map(float, input().split())) for _ in range(n)])
print(round(numpy.linalg.det(arr), 2))