
- NumPy Tutorial
- NumPy - Home
- NumPy - Introduction
- NumPy - Environment
- NumPy Arrays
- NumPy - Ndarray Object
- NumPy - Data Types
- NumPy Creating and Manipulating Arrays
- NumPy - Array Creation Routines
- NumPy - Array Manipulation
- NumPy - Array from Existing Data
- NumPy - Array From Numerical Ranges
- NumPy - Iterating Over Array
- NumPy - Reshaping Arrays
- NumPy - Concatenating Arrays
- NumPy - Stacking Arrays
- NumPy - Splitting Arrays
- NumPy - Flattening Arrays
- NumPy - Transposing Arrays
- NumPy Indexing & Slicing
- NumPy - Indexing & Slicing
- NumPy - Indexing
- NumPy - Slicing
- NumPy - Advanced Indexing
- NumPy - Fancy Indexing
- NumPy - Field Access
- NumPy - Slicing with Boolean Arrays
- NumPy Array Attributes & Operations
- NumPy - Array Attributes
- NumPy - Array Shape
- NumPy - Array Size
- NumPy - Array Strides
- NumPy - Array Itemsize
- NumPy - Broadcasting
- NumPy - Arithmetic Operations
- NumPy - Array Addition
- NumPy - Array Subtraction
- NumPy - Array Multiplication
- NumPy - Array Division
- NumPy Advanced Array Operations
- NumPy - Swapping Axes of Arrays
- NumPy - Byte Swapping
- NumPy - Copies & Views
- NumPy - Element-wise Array Comparisons
- NumPy - Filtering Arrays
- NumPy - Joining Arrays
- NumPy - Sort, Search & Counting Functions
- NumPy - Searching Arrays
- NumPy - Union of Arrays
- NumPy - Finding Unique Rows
- NumPy - Creating Datetime Arrays
- NumPy - Binary Operators
- NumPy - String Functions
- NumPy - Matrix Library
- NumPy - Linear Algebra
- NumPy - Matplotlib
- NumPy - Histogram Using Matplotlib
- NumPy Sorting and Advanced Manipulation
- NumPy - Sorting Arrays
- NumPy - Sorting along an axis
- NumPy - Sorting with Fancy Indexing
- NumPy - Structured Arrays
- NumPy - Creating Structured Arrays
- NumPy - Manipulating Structured Arrays
- NumPy - Record Arrays
- Numpy - Loading Arrays
- Numpy - Saving Arrays
- NumPy - Append Values to an Array
- NumPy - Swap Columns of Array
- NumPy - Insert Axes to an Array
- NumPy Handling Missing Data
- NumPy - Handling Missing Data
- NumPy - Identifying Missing Values
- NumPy - Removing Missing Data
- NumPy - Imputing Missing Data
- NumPy Performance Optimization
- NumPy - Performance Optimization with Arrays
- NumPy - Vectorization with Arrays
- NumPy - Memory Layout of Arrays
- Numpy Linear Algebra
- NumPy - Linear Algebra
- NumPy - Matrix Library
- NumPy - Matrix Addition
- NumPy - Matrix Subtraction
- NumPy - Matrix Multiplication
- NumPy - Element-wise Matrix Operations
- NumPy - Dot Product
- NumPy - Matrix Inversion
- NumPy - Determinant Calculation
- NumPy - Eigenvalues
- NumPy - Eigenvectors
- NumPy - Singular Value Decomposition
- NumPy - Solving Linear Equations
- NumPy - Matrix Norms
- NumPy Element-wise Matrix Operations
- NumPy - Sum
- NumPy - Mean
- NumPy - Median
- NumPy - Min
- NumPy - Max
- NumPy Set Operations
- NumPy - Unique Elements
- NumPy - Intersection
- NumPy - Union
- NumPy - Difference
- NumPy Random Number Generation
- NumPy - Random Generator
- NumPy - Permutations & Shuffling
- NumPy - Uniform distribution
- NumPy - Normal distribution
- NumPy - Binomial distribution
- NumPy - Poisson distribution
- NumPy - Exponential distribution
- NumPy - Rayleigh Distribution
- NumPy - Logistic Distribution
- NumPy - Pareto Distribution
- NumPy - Visualize Distributions With Sea born
- NumPy - Matplotlib
- NumPy - Multinomial Distribution
- NumPy - Chi Square Distribution
- NumPy - Zipf Distribution
- NumPy File Input & Output
- NumPy - I/O with NumPy
- NumPy - Reading Data from Files
- NumPy - Writing Data to Files
- NumPy - File Formats Supported
- NumPy Mathematical Functions
- NumPy - Mathematical Functions
- NumPy - Trigonometric functions
- NumPy - Exponential Functions
- NumPy - Logarithmic Functions
- NumPy - Hyperbolic functions
- NumPy - Rounding functions
- NumPy Fourier Transforms
- NumPy - Discrete Fourier Transform (DFT)
- NumPy - Fast Fourier Transform (FFT)
- NumPy - Inverse Fourier Transform
- NumPy - Fourier Series and Transforms
- NumPy - Signal Processing Applications
- NumPy - Convolution
- NumPy Polynomials
- NumPy - Polynomial Representation
- NumPy - Polynomial Operations
- NumPy - Finding Roots of Polynomials
- NumPy - Evaluating Polynomials
- NumPy Statistics
- NumPy - Statistical Functions
- NumPy - Descriptive Statistics
- NumPy Datetime
- NumPy - Basics of Date and Time
- NumPy - Representing Date & Time
- NumPy - Date & Time Arithmetic
- NumPy - Indexing with Datetime
- NumPy - Time Zone Handling
- NumPy - Time Series Analysis
- NumPy - Working with Time Deltas
- NumPy - Handling Leap Seconds
- NumPy - Vectorized Operations with Datetimes
- NumPy ufunc
- NumPy - ufunc Introduction
- NumPy - Creating Universal Functions (ufunc)
- NumPy - Arithmetic Universal Function (ufunc)
- NumPy - Rounding Decimal ufunc
- NumPy - Logarithmic Universal Function (ufunc)
- NumPy - Summation Universal Function (ufunc)
- NumPy - Product Universal Function (ufunc)
- NumPy - Difference Universal Function (ufunc)
- NumPy - Finding LCM with ufunc
- NumPy - ufunc Finding GCD
- NumPy - ufunc Trigonometric
- NumPy - Hyperbolic ufunc
- NumPy - Set Operations ufunc
- NumPy Useful Resources
- NumPy Compiler
- NumPy - Quick Guide
- NumPy - Cheatsheet
- NumPy - Useful Resources
- NumPy - Discussion
NumPy - Determinant Calculation
What is a Matrix Determinant?
A matrix determinant is a special number that can be calculated from a square matrix. It provides important information about the matrix, such as whether the matrix is invertible.
The determinant of a matrix is a single number, not a matrix, and it can be used to solve systems of linear equations, find eigenvalues, and more.
For example, the determinant of a 2x2 matrix A is calculated as follows −
A = [[a, b], [c, d]] Det(A) = ad - bc
For larger matrices, the determinant is calculated recursively using a process called cofactor expansion.
Determinant Calculation in NumPy
NumPy provides the numpy.linalg.det() function to compute the determinant of a matrix. Let us see how this function works with an example of a 2x2 matrix.
Example
In the following example, the determinant of the matrix A is computed using the numpy.linalg.det() function −
import numpy as np # Define a 2x2 matrix A = np.array([[1, 2], [3, 4]]) # Compute the determinant of the matrix det_A = np.linalg.det(A) print(det_A)
Following is the output obtained −
-2.0000000000000004
Determinant of a 3x3 Matrix
The determinant of a 3x3 matrix is calculated using a more complex formula that involves minors and cofactors. Following is an example of calculating the determinant of a 3x3 matrix using NumPy −
import numpy as np # Define a 3x3 matrix B = np.array([[6, 1, 1], [4, -2, 5], [2, 8, 7]]) # Compute the determinant of the matrix det_B = np.linalg.det(B) print(det_B)
This will produce the following result −
-306.0
Properties of Determinants
Determinants have several important properties. They are as follows −
- Multiplicative Property: The determinant of the product of two matrices is equal to the product of their determinants: det(AB) = det(A) . det(B).
- Transpose Property: The determinant of a matrix is equal to the determinant of its transpose: det(A) = det(AT).
- Inverse Property: The determinant of the inverse of a matrix is the reciprocal of the determinant: det(A-1) = 1 / det(A).
- Row Operations: Swapping two rows of a matrix multiplies its determinant by -1, scaling a row by a constant multiplies the determinant by that constant, and adding a multiple of one row to another does not change the determinant.
Conditions for a Non-Zero Determinant
For a matrix to have a non-zero determinant, it must meet the following conditions −
- Square Matrix: The matrix must have the same number of rows and columns.
- Full Rank: The matrix must have full rank, meaning all its rows (or columns) are linearly independent.
Using Determinants in Linear Equations
Determinants are used to solve systems of linear equations using Cramer's Rule. If we have a system of equations represented by AX = B, where A is the coefficient matrix, X is the vector of unknowns, and B is the constant vector, we can solve for X if det(A) 0 −
import numpy as np # Coefficient matrix A = np.array([[2, 1], [5, 7]]) # Constant vector B = np.array([11, 13]) # Solve for X using Cramer's Rule det_A = np.linalg.det(A) A1 = np.array([[11, 1], [13, 7]]) A2 = np.array([[2, 11], [5, 13]]) X1 = np.linalg.det(A1) / det_A X2 = np.linalg.det(A2) / det_A X = np.array([X1, X2]) print(X)
Following is the output of the above code −
[ 7.11111111 -3.22222222]
Practical Applications of Determinants
Determinants have many practical applications, such as −
- Solving Systems of Linear Equations: Determinants are used in Cramer's Rule to solve systems of linear equations.
- Finding Eigenvalues: Determinants are used to find the eigenvalues of a matrix.
- Area and Volume Calculation: Determinants can be used to calculate the area of parallelograms and the volume of parallelepipeds in higher dimensions.
- Change of Variables in Integrals: In multivariable calculus, the determinant of the Jacobian matrix is used in the change of variables formula for integrals.
Handling Non-Invertible Matrices
If a matrix has a determinant of zero, it is called singular and does not have an inverse. Attempting to compute the inverse of a singular matrix will result in an error. Here is how we can handle such scenarios using NumPy −
import numpy as np def calculate_determinant(matrix): try: return np.linalg.det(matrix) except np.linalg.LinAlgError: return "Matrix is singular and has no determinant." # Singular matrix C = np.array([[1, 2], [2, 4]]) # Attempt to compute the determinant result = calculate_determinant(C) print(result)
Following is the output obtained −
0.0