Как сканировать матрицу с заданным шагом?
Есть такой скрипт:
import numpy
a = numpy.arange(1, 6)
b = numpy.arange(6, 11)
c = numpy.arange(11, 16)
d = numpy.arange(16, 21)
e = numpy.arange(21, 26)
matrixA = numpy.array([a, b, c, d, e]) # Матрица 5x5
def matrix_scanner(matrix):
print("Входная матрица:\n", matrix)
rows, columns = matrix.shape
print("Размер матрицы: {0}x{1}\n".format(rows, columns))
def main():
# print("matrixA:\n", matrixA)
matrix_scanner(matrixA)
if __name__ == '__main__':
main()
Входная матрица (размер матрицы: 5x5):
[[ 1 2 3 4 5]
[ 6 7 8 9 10]
[11 12 13 14 15]
[16 17 18 19 20]
[21 22 23 24 25]]
Как мне сканировать эту матрицу шагом 2x2, чтобы получались значения:
[1 2] [2 3] [3 4] [4 5]
[6 7] [7 8] [8 9] [9 10]
[6 7]
[11 12]
И так далее.
Мне нужно подобие этого:
Точнее вот этого:
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Исходная матрица:
In [63]: matrixA
Out[63]:
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]])
In [65]: from sklearn.feature_extraction import image
In [66]: patches = image.extract_patches_2d(matrixA, (2,2))
результат:
In [67]: patches[0]
Out[67]:
array([[1, 2],
[6, 7]])
In [68]: patches[1]
Out[68]:
array([[2, 3],
[7, 8]])
In [69]: patches[2]
Out[69]:
array([[3, 4],
[8, 9]])
In [70]: patches[3]
Out[70]:
array([[ 4, 5],
[ 9, 10]])
In [71]: patches[4]
Out[71]:
array([[ 6, 7],
[11, 12]])
In [72]: patches[5]
Out[72]:
array([[ 7, 8],
[12, 13]])

