numpy.where()
# To install this library in Jupyter notebook
#import sys
#!{sys.executable} -m pip install numpy
import numpy as np
np.__version__ , np.__path__
import numpy as np
# Create a 1-D array having 4 random integers from 1 to 9
arr = np.random.randint(1,10, size=4)
print("arr: ", arr)
# After the operation a new `ndarray` is returned
print("np.add(arr,2): ", arr + 2) # np.add(arr, 2))
print("np.subtract(arr,2): ", arr - 2) # np.subtract(arr, 2))
print("np.multiply(arr,2): ", arr * 2) # np.multiply(arr, 2))
print("np.divide(arr,2): ", arr / 2) # np.divide(arr, 2))
print("np.mod(arr,2): ", arr % 2) # np.mod(arr, 2))
arr3 = arr + 9
print(id(arr), id(arr3))
import numpy as np
# Create a 2x2 matrix with random integers between 1 to 9
matrix = np.random.randint(1,10, size=(2, 2))
print("Original matrix:\n", matrix)
# After the operation a new `ndarray` is returned
print("np.add(matrix,2): \n", matrix + 2) # np.add(matrix, 2))
print("np.subtract(matrix,2): \n", matrix - 2) # np.subtract(matrix, 2))
print("np.multiply(matrix,2): \n", matrix * 2) # np.multiply(matrix, 2))
print("np.divide(matrix,2): \n", matrix / 2) # np.divide(matrix, 2))
print("np.mod(matrix,2): \n", matrix % 2) # np.mod(matrix, 2))
import numpy as np
# Create two 1-D arrays each having 4 random integers from 1 to 9
arr1 = np.random.randint(1,10, size=4)
arr2 = np.random.randint(1,10, size=4)
print("arr1: ", arr1)
print("arr2: ", arr2)
# After the operation a new `ndarray` is returned
print("np.add(arr1, arr2) = ", arr1 + arr2) # np.add(arr1, arr2)
print("np.subtract(arr1, arr2) = ", arr1 - arr2) # np.subtract(arr1, arr2)
print("np.multiply(arr1, arr2) = ", arr1 * arr2) # np.multiply(arr1, arr2)
print("np.divide(arr1, arr2) = ", arr1 / arr2) # np.divide(arr1, arr2)
print("np.mod(arr1, arr2) = ", arr1 % arr2) # np.mod(arr1, arr2) # np.remainder(arr1, arr2)
import numpy as np
# Create a 2x2 matrix with random integers between 1 to 9
matrix1 = np.random.randint(1,10, size=(2, 2))
matrix2 = np.random.randint(1, 10, size=(2, 2))
print("matrix1: \n", matrix1)
print("matrix2: \n", matrix2)
# After the operation a new `ndarray` is returned
print("np.add(matrix1 , matrix2) = \n", matrix1 + matrix2) # np.add(matrix1 , matrix2)
print("np.subtract(matrix1 , matrix2) = \n", matrix1 - matrix2) # np.subtract(matrix1 , matrix2)
print("np.multiply(matrix1 , matrix2) = \n", matrix1 * matrix2) # np.multiply(matrix1 , matrix2)
print("np.divide(matrix1 , matrix2) = \n", matrix1 / matrix2) # np.divide(matrix1 , matrix2)
print("np.mod(matrix1 , matrix2) = \n", matrix1 % matrix2) # np.remainder(matrix1 , matrix2)
# Creating 1-D array of 5 elements of random floats between 1 and 10
arr = np.random.rand(5)*10
print("Original ndarray: ", arr)
# After the operation a new `ndarray` is returned, which is a copy of the original array with the operation performed
print("np.abs(arr) = ", np.abs(arr))
print("np.square(arr) = ", np.square(arr))
print("np.sqrt(arr) = ", np.sqrt(arr))
print("np.cbrt(arr) = ", np.cbrt(arr))
print("np.log(arr) = ", np.log(arr))
print("np.log2(arr) = ", np.log2(arr))
print("np.log10(arr) = ", np.log10(arr))
print("np.isnan(arr) = ", np.isnan(arr))
print("np.ceil(arr) = ", np.ceil(arr))
print("np.floor(arr) = ", np.floor(arr))
print("np.cumsum(arr) = ", np.cumsum(arr))
import numpy as np
# Create a 2x2 matrix with random integers between 1 to 9
matrix = np.random.randint(1,10, size=(2, 2))
print("matrix: \n", matrix)
# After the operation a new `ndarray` is returned, which is a copy of the original array with the operation performed
print("np.square(matrix) = \n", np.square(matrix))
print("np.sqrt(matrix) = \n", np.sqrt(matrix))
print("np.log2(matrix) = \n", np.log2(matrix))
print("np.isnan(matrix) = \n", np.isnan(matrix))
print("np.ceil(matrix) = \n", np.ceil(matrix))
print("np.floor(matrix) = \n", np.floor(matrix))
print("np.cumsum(matrix) = \n", np.cumsum(matrix))
# Create a 1-D array having 5 random integers from 1 to 9
arr = np.random.randint(1, 10, size=5)
print("arr: ", arr)
# After the operation a new `ndarray` is returned, which is a copy of the original array with the operation performed
print("np.min(arr) = ", np.min(arr))
print("np.max(arr) = ", np.max(arr))
print("np.sum(arr) = ", np.sum(arr))
print("np.prod(arr) = ", np.prod(arr))
# Create a 1-D array having 5 random integers from 1 to 9
arr = np.random.randint(1, 10, size=5)
print("arr: ", arr)
#Arithmetic mean is the sum of elements along an axis divided by the number of elements.
print("np.mean(arr) = ", np.mean(arr))
# The np.average() function computes the weighted average, by multiplying of each array element by its weight
# The np.average() is same as np.mean(), when weight is not specified
print("np.average(arr) = ", np.average(arr))
# Considering an array [1,2,3,4] and corresponding weights [4,3,2,1], the weighted average is calculated by
# adding the product of the corresponding elements and dividing the sum by the sum of weights.
# Weighted average = (1*4+2*3+3*2+4*1)/(4+3+2+1)
arr1 = np.array([1,2,3,4])
wts = np.array([4,3,2,1])
print("\narr1: ", arr1)
print("wts: ", wts)
print("np.average(arr1, weights=wts) = ", np.average(arr1, weights= wts))
# Create a 1-D array having 10 random integers from 1 to 99
arr = np.random.randint(1, 100, size=10)
print("arr: ", arr)
# Median is the value separating the higher half of a data sample from the lower half.
print("np.median(arr) = ", np.median(arr))
# Percentile is the value below which a given percentage of observations in a group of observations fall.
# 50th percentile is the score at or below which 50% of the scores in the distribution may be found.
print("np.percentile(arr,50) = ", np.percentile(arr,50))
print("np.percentile(arr,0) = ", np.percentile(arr,0))
print("np.percentile(arr,100) = ", np.percentile(arr,100))
# The variance measures the average degree to which each point differs from the mean
# Variance is calculated as the average of squared deviations from mean, i.e., mean((x - x.mean())**2).
print("np.var(arr) = ", np.var(arr))
# Standard deviation checks how spread out a group of numbers is from the mean
# It is the square root of variance: sqrt(mean((x - x.mean())**2))
print("np.std(arr) = ", np.std(arr))
import numpy as np
# Create a 3x3 (2-D array) initialized with random integers from 1 to 9
matrix = np.random.randint(1,10, size=(3, 3))
print("matrix: \n", matrix)
print("np.sum(matrix, axis=0) = ", np.sum(matrix, axis=0))
print("np.sum(matrix, axis=1) = ", np.sum(matrix, axis=1))
# Create a 3x3 (2-D array) initialized with random integers from 1 to 9
matrix = np.random.randint(1,10, size=(3, 3))
print("matrix: \n", matrix)
print("np.min(matrix, axis=0) = ", np.min(matrix, axis=0))
print("np.min(matrix, axis=1) = ", np.min(matrix, axis=1))
# Create a 3x3 (2-D array) initialized with random integers from 1 to 9
matrix = np.random.randint(1,10, size=(3, 3))
print("matrix: \n", matrix)
print("np.mean(matrix, axis=0) = ", np.mean(matrix, axis=0))
print("np.mean(matrix, axis=1) = ", np.mean(matrix, axis=1))
# Create a 3x3 (2-D array) initialized with random integers from 1 to 9
matrix = np.random.randint(1,10, size=(3, 3))
print("matrix: \n", matrix)
# Median is the value separating the higher half of a data sample from the lower half.
print("np.median(matrix, axis=0) = ", np.median(matrix, axis=0))
print("np.median(matrix, axis=1) = ", np.median(matrix, axis=1))
Please do practice calculating the percentile, variance and standard deviation along different axis of a 2-D array
import numpy as np
# Create two 1-D arrays each having 4 random integers from 1 to 9
arr1 = np.random.randint(1,10, size=4)
arr2 = np.random.randint(1,10, size=4)
print("arr1: ", arr1)
print("arr2: ", arr2)
print("np.equal(arr1, arr2) = ", arr1 == arr2) # np.equal(arr1, arr2)
print("np.not_equal(arr1, arr2) = ", arr1 != arr2) # np.not_equal(arr1, arr2)
print("np.greater(arr1, arr2) = ", arr1 > arr2) # np.greater(arr1, arr2)
print("np.greater_equal(arr1, arr2) = ", arr1 >= arr2) # np.greater_equal(arr1, arr2)
print("np.less(arr1, arr2) = ", arr1 < arr2) # np.less(arr1, arr2)
print("np.less_equal(arr1, arr2) = ", arr1 <= arr2) # np.less_equal(arr1, arr2)
arr1: [7 5 8 7] arr2: [2 3 3 4] np.equal(arr1, arr2) = [False False False False] np.not_equal(arr1, arr2) = [ True True True True] np.greater(arr1, arr2) = [ True True True True] np.greater_equal(arr1, arr2) = [ True True True True] np.less(arr1, arr2) = [False False False False] np.less_equal(arr1, arr2) = [False False False False]
import numpy as np
# Create a 2x2 matrix with random integers between 1 to 9
matrix1 = np.random.randint(1,10, size=(2, 2))
matrix2 = np.random.randint(1, 10, size=(2, 2))
print("matrix1: \n", matrix1)
print("matrix2: \n", matrix2)
print("np.equal(matrix1, matrix2) = \n", matrix1 == matrix2)
print("np.not_equal(matrix1, matrix2) = \n", matrix1 != matrix2)
print("np.greater(matrix1, matrix2) = \n", matrix1 > matrix2)
print("np.greater_equal(matrix1, matrix2) = \n",matrix1 >= matrix2)
print("np.less(matrix1, matrix2) = \n", matrix1 < matrix2)
print("np.less_equal(matrix1, matrix2) = \n", matrix1 <= matrix2)
matrix1: [[4 6] [5 6]] matrix2: [[7 5] [9 4]] np.equal(matrix1, matrix2) = [[False False] [False False]] np.not_equal(matrix1, matrix2) = [[ True True] [ True True]] np.greater(matrix1, matrix2) = [[False True] [False True]] np.greater_equal(matrix1, matrix2) = [[False True] [False True]] np.less(matrix1, matrix2) = [[ True False] [ True False]] np.less_equal(matrix1, matrix2) = [[ True False] [ True False]]
numpy.where()
¶numpy.where()
method is used to search NumPy arrays for the index values of any element which matches the condition passed as a parameter to the function.numpy.where(condition, [x, y])
- condition : When True, yield x, otherwise yield y. If x and y are not given just return the value of the array
- Returns: ndarray or tuple of ndarrays. If both x and y are specified, the output array contains elements of x where condition is True, and elements from y elsewhere.
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 4, 4, 9, 2, 3, 8])
t1 = np.where(arr == 4)
print(t1)
(array([3, 5, 6]),)
Note: The result is a tuple of 1-D arrays having a single tuple containing the index
import numpy as np
arr = np.array([1, 0, 3, 9, 5, 2, 0, 8])
t1 = np.where(arr == 0)
print(t1)
(array([1, 6]),)
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
t1 = np.where(arr%2 == 0)
print(t1)
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
t1 = np.where(arr%2 == 0, True, False)
print(t1)
[False True False True False True False True]
Note: The result is a simple 1-D array, when you use the x and y arguments to np.where()
numpy.where()
method is used to search NumPy arrays for the index values of any element which matches the condition passed as a parameter to the function.numpy.where(condition, [x, y])
- condition : When True, yield x, otherwise yield y. If x and y are not given just return the value of the array
- Returns: ndarray or tuple of ndarrays. If both x and y are specified, the output array contains elements of x where condition is True, and elements from y elsewhere.
import numpy as np
matrix = np.array([[1, 2, 3], [4, 5, 4], [4, 9, 2], [3, 8, 6]])
print("matrix: \n", matrix)
t1 = np.where(matrix == 4)
print(t1)
matrix: [[1 2 3] [4 5 4] [4 9 2] [3 8 6]] (array([1, 1, 2]), array([0, 2, 0]))
Note: The result is a tuple of 1-D arrays having two tuples. The condition is true for three elements at indices (1,0)
, (1,2)
and (2,0)
import numpy as np
matrix = np.array([[1, 2, 0], [4, 5, 0], [4, 9, 2], [3, 0, 6]])
print("matrix: \n", matrix)
t1 = np.where(matrix == 0)
print(t1)
matrix: [[1 2 0] [4 5 0] [4 9 2] [3 0 6]] (array([0, 1, 3]), array([2, 2, 1]))
Note: The result is a tuple of 1-D arrays having two tuples. The condition is true for three elements at indices:
(0,2)
, (1,2)
and (3,1)
import numpy as np
matrix = np.array([[1, 2, 3], [5, 7, 3], [4, 9, 1], [3, 5, 3]])
print("matrix: \n", matrix)
t1 = np.where(matrix%2 == 0)
print(t1)
matrix: [[1 2 3] [5 7 3] [4 9 1] [3 5 3]] (array([0, 2]), array([1, 0]))
Note: The result is a tuple of 1-D arrays having two tuples. The condition is true for two elements at indices:
(0,2)
and (1,0)
import numpy as np
matrix = np.array([[1, 2, 3], [5, 7, 3], [4, 9, 1], [3, 5, 3]])
print("matrix: \n", matrix)
t1 = np.where(matrix%2 == 0, True, False)
print(t1)
matrix: [[1 2 3] [5 7 3] [4 9 1] [3 5 3]] [[False True False] [False False False] [ True False False] [False False False]]
Note: The result is a simple 2-D array, when you use the x
and y
arguments to np.where()
import numpy as np
arr = np.array([[1, 2, 3, 4], [4, 5, 4, 2], [8, 4, 9, 2], [4, 3, 8, 6]])
t1 = np.where(arr == 4)
print(t1)
(array([0, 1, 1, 2, 3]), array([3, 0, 2, 1, 0]))