Numpy is a Python library for scientific computing. It provides a high-performance multidimensional array object, and tools for working with these arrays. It is the fundamental package for scientific computing with Python.
NumPy stands for "Numerical Python" and is a Python library used for scientific computing and data analysis.
It provides support for large, multi-dimensional arrays and matrices, along with a collection of high-level mathematical functions to operate on these arrays efficiently.
NumPy is built on top of the C programming language, which provides fast execution times and efficient memory usage.
NumPy arrays are homogeneous and can store only one data type (such as integers or floats).
pip install numpy
import numpy as np
my_list = [1, 2, 3, 4, 5]
arr = np.array(my_list)
my_tuple = (1, 2, 3, 4, 5)
arr = np.array(my_tuple)
my_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
arr = np.array(my_list)
my_tuple = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
arr = np.array(my_tuple)
We can use the np.zeros() function to create an array of zeros.
this function takes shape parameter which can be a tuple of integers or just one integer specifying the shape of the array.
np.zeros()
arr = np.zeros(5)
print(arr)
# output
[0. 0. 0. 0. 0.]
arr = np.zeros((3, 4))
print(arr)
# output
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
arr = np.ones(5)
print(arr)
# output
[1. 1. 1. 1. 1.]
arr = np.ones((3, 4))
print(arr)
# output
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
arr = np.arange(5, 10, 2)
print(arr)
# output
[5 7 9]
arr = np.linspace(0, 10, 5)
print(arr)
# output
[ 0. 2.5 5. 7.5 10. ]
arr = np.eye(5)
print(arr)
# output
[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]
arr = np.eye(3, 4)
print(arr)
# output
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]]
arr = np.random.rand(5)
# output
[0.5488135 0.71518937 0.60276338 0.54488318 0.4236548 ]
arr = np.random.rand(3, 4)
# output
[[0.64589411 0.43758721 0.891773 0.96366276]
[0.38344152 0.79172504 0.52889492 0.56804456]
[0.92559664 0.07103606 0.0871293 0.0202184 ]]
arr = np.random.randint(5)
arr = np.random.randint(5, 10)
arr = np.random.randint(5, 10, 3)
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape)
# output
(2, 3)
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.ndim)
# output
2
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.size)
# output
6
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.dtype)
# output
int32
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.itemsize)
# output
4
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.nbytes)
# output
24
arr = np.array([1, 2, 3, 4, 5])
print(arr[0])
# output
1
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[0, 1])
# output
2
arr = np.array([1, 2, 3, 4, 5])
print(arr[1:3])
# output
[2 3]
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[0, 1:3])
# output
[2 3]
arr = np.array([1, 2, 3, 4, 5, 6])
print(arr.reshape(2, 3))
# output
[[1 2 3]
[4 5 6]]
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.reshape(3, 2))
# output
[[1 2]
[3 4]
[5 6]]
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr = np.concatenate((arr1, arr2))
print(arr)
# output
[1 2 3 4 5 6]
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
arr = np.concatenate((arr1, arr2), axis=1)
print(arr)
# output
[[1 2 5 6]
[3 4 7 8]]
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr = np.stack((arr1, arr2), axis=1)
print(arr)
# output
[[1 4]
[2 5]
[3 6]]
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
arr = np.stack((arr1, arr2), axis=1)
print(arr)
# output
[[[1 2]
[5 6]]
[[3 4]
[7 8]]]
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 3)
print(newarr)
# output
[array([1, 2]), array([3, 4]), array([5, 6])]
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 4)
print(newarr)
# output
[array([1, 2]), array([3, 4]), array([5]), array([6])]
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr = np.array_split(arr, 3)
print(newarr)
# output
[array([[1, 2, 3]]), array([[4, 5, 6]]), array([], shape=(0, 3), dtype=int64)]
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr = np.array_split(arr, 4)
print(newarr)
# output
[array([[1, 2, 3]]), array([[4, 5, 6]]), array([], shape=(0, 3), dtype=int64), array([], shape=(0, 3), dtype=int64)]
arr = np.array([1, 2, 3, 4, 5, 4, 4])
x = np.where(arr == 4)
print(x)
# output
(array([3, 5, 6], dtype=int64),)
arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
x = np.where(arr%2 == 0)
print(x)
# output
(array([0, 0, 1, 1, 1, 1], dtype=int64), array([1, 3, 0, 2, 3, 4], dtype=int64))
arr = np.array([3, 2, 0, 1])
print(np.sort(arr))
# output
[0 1 2 3]
arr = np.array([[3, 2, 4], [5, 0, 1]])
print(np.sort(arr))
# output
[[2 3 4]
[0 1 5]]
arr = np.array([41, 42, 43, 44])
x = [True, False, True, False]
newarr = arr[x]
print(newarr)
# output
[41 43]
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
filter_arr = arr > 5
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
# output
[[False False False False]
[False True True True]]
[6 7 8]
from numpy import random
x = random.randint(100)
print(x)
# output
49
from numpy import random
x = random.rand()
print(x)
# output
0.9194024197301045
from numpy import random
x = random.randint(100, size=(5))
print(x)
# output
[ 0 3 9 5 2]
from numpy import random
x = random.randint(100, size=(3, 5))
print(x)
# output
[[ 0 3 9 5 2]
[ 4 7 6 8 8]
[ 1 6 7 7 0]]
from numpy import random
x = random.rand(5)
print(x)
# output
[0.91940242 0.7142413 0.99884701 0.1494483 0.86812606]
from numpy import random
x = random.rand(3, 5)
print(x)
# output
[[0.16595599 0.44064899 0.14090086 0.88212403 0.80655667]
[0.0010831 0.96366276 0.38344152 0.79172504 0.52889492]
[0.56804456 0.92559664 0.07103606 0.0871293 0.0202184 ]]
from numpy import random
x = random.choice([3, 5, 7, 9])
print(x)
# output
5
from numpy import random
x = random.choice([3, 5, 7, 9], size=(3, 5))
print(x)
# output
[[5 3 3 7 7]
[7 5 5 5 3]
[5 5 7 3 7]]
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 42
print(arr)
print(x)
# output
[42 2 3 4 5]
[1 2 3 4 5]
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
arr[0] = 42
print(arr)
print(x)
# output
[42 2 3 4 5]
[42 2 3 4 5]
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])
arr = arr1 + arr2
print(arr)
# output
[ 6 8 10 12]
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])
arr = arr2 - arr1
print(arr)
# output
[4 4 4 4]
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])
arr = arr1 * arr2
print(arr)
# output
[ 5 12 21 32]
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])
arr = arr2 / arr1
print(arr)
# output
[5. 3. 2.33333333 2. ]
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])
arr = np.power(arr1, arr2)
print(arr)
# output
[ 1 64 2187 65536]
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])
arr = np.remainder(arr2, arr1)
print(arr)
# output
[0 0 1 0]