Say I have a NxN numpy matrix. I am looking for the fastest way of extracting all square chunks (sub-matrices) from this matrix. Meaning all CxC parts of the original matrix for 0 < C < N+1. The sub-matrices should correspond to contiguous rows/columns indexes of the original matrix. I want to achieve this in as little time as possible.
Extratcing all square submatrices from matrix using Numpy
2.2k views Asked by TweedBeetle At
2
There are 2 answers
0
Quan Gan
On
Tricky enough, but here is an example of extracting all MxM submatrices in a NxN matrix.
import numpy as NP
import numpy.random as RNG
P = N - M + 1
x = NP.arange(P).repeat(M)
y = NP.tile(NP.arange(M), P) + x
a = RNG.randn(N, N)
b = a[NP.newaxis].repeat(P, axis=0)
c = b[x, y]
d = c.reshape(P, M, N)
e = d[:, NP.newaxis].repeat(P, axis=1)
f = e[:, x, :, y]
g = f.reshape(P, M, P, M)
h = g.transpose(2, 0, 3, 1)
for i in range(0, P):
for j in range(0, P):
assert NP.equal(h[i, j], a[i:i+M, j:j+M]).all()
Related Questions in PYTHON-2.7
- Telnet function in Python
- symbol not found in flat namespace '__PyTrash_begin
- Python 2.7 requirements won't install without virtualenv
- Python search for the errors in the JSON
- spectrogram for a .cdf file
- SSL Error and InsecurePlatformWarning when installing packages using pip on Python 2.7
- Canonical way to ensure float point division across py2 and py3?
- Unable to execute Python Script directly
- Pip from Python 2.7.10 installed via pyenv-win cannot install any packages
- Arcpy: Python stops ExportToPDF through list after some iterations
- Python2 unable to pickle string
- Reading Excelsheets using openpyxl and Python
- How can I store a function in an array in python?
- " 'Word2Vec' object has no attribute 'load_parent_word2vec_format' " error
- How to execute a nodejs function from the python code?
Related Questions in NUMPY
- Why numpy.vectorize calls vectorized function more times than elements in the vector?
- Producing filtered random samples which can be replicated using the same seed
- Numpy array methods are faster than numpy functions?
- When I create a series of spectrograms from a long audio file, the colour intesities vary noticably
- How do I fix a NumPy ValueError for an inhomogeneous array shape?
- How should I troubleshoot "RuntimeWarning: invalid value encountered in arccos" in NumPy?
- Unravel by multi-index/group
- Calculating IRR Using Numpy
- Integrating with an array of upper limits without sacrificing time efficiency
- Why doesn't this code work? - Backpropagation algorithm
- How to remove integers from a mixed numpy array containing sub-arrays and integers?
- How to transfer object dataframe in sklearn.ensemble methods
- Rust cannot borrow as mutable
- Why does the following code detect this matrix as a non-singular matrix?
- How to detect the exact boundary of a Sudoku using OpenCV when there are multiple external boundaries?
Related Questions in MATRIX
- Setting diagonal of a matrix to zero
- CUDA matrix inversion
- Function to create matrix of zeros and ones, with a certain density of ones
- DirectX 9 With No SDK Installed - How To Translate a D3DMATRIX?
- Using the sympy module to compute the matrix multiplication involving symbols
- Rendering a visualisation of matrix using pygame
- I do not receive iOS push notifications from Element Matrix Notify
- Matrix reconstruction by SVD in tensorflow
- Why does the following code detect this matrix as a non-singular matrix?
- Bound for product of matrices
- iterating through raster bands to perform calculation
- How to make a heatmap and the matrix for it?
- MATLAB: Turn every element of complex matrix into another matrix
- Matrix calculated based on the previous value
- Matlab array of structure
Related Questions in SUBMATRIX
- Armadillo C++ matrix multiplication with in-place assignment to submatrix
- Cluster a 25 x 25 matrix into submatrices (3x3)
- From a pairwise matrix, find the largest group of individuals that equal a certain value
- Sending submatrices using MPI_Scatterv and MPI_Type_vector and MPI_Type_create_resized
- In Kotlin, is there a way to use chunking to split a List<List<Int>> of size 1104 x 828 into 184 x 69 sublists of 6 x 12?
- Obtaining a submatrix from a squared matrix in C
- Find submatrices of matrix containing nan values such that largest amount of known values is covered by submatrices
- Determine indexes where A is a submatrix of matrix B
- find upper left index of subMatrix in C language
- Removing columns from a "big.matrix" gives error: "cannot allocate vector of size 37.6 Gb"
- Sampling submatrices in R
- Smallest Submatrix in python
- How do I extract a submatrix to run a for loop and calculate a specific parameter?
- How to extract all K*K submatrix of matrix with or without NumPy?
- Creating submatrix in python
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
You could use Numpy slicing,
avoiding loops in Numpy, is not a goal by itself. As long as you are being mindful about it, there shouldn't be much overhead.