finding every squares value in array

Question:

I have different sizes of arrays that each element is its index if it was flatten. Is there a way to print out every element per square going clockwise? I thought about slicing the arrays but that doesn’t go clockwise and only prints one square and not all.

arr1 = np.array([[0, 1],[2, 3]])
arr2 = np.array([[0, 1, 2],[3, 4, 5]])
arr3 = np.array([[0, 1],[2, 3],[4, 5]])

print(arr1[0:2,0:2])
print()
print(arr2[0:2,0:2])
print()
print(arr3[0:2,0:2])
output:

[[0 1]
 [2 3]]

[[0 1]
 [3 4]]

[[0 1]
 [2 3]]

enter image description here

Asked By: zay_117

||

Answers:

Maybe this helps

import numpy as np


a = np.random.randint(0, 10, size=(7, 9))

print(a)


for i in range(a.shape[0]):
    for j in range(a.shape[1]):
        x = a[i:i+2, j:j+2]
        if x.flatten().size == 4:
            print(x) # every 2 by 2 array of 4 elements

            m = x.copy()  # copy x so not to be changed!
            m[1] = m[1][::-1] # reverse row 1 elements
            print(m.flatten()) # 1d array clockwise
Answered By: Khalil Al Hooti
from numpy.lib.stride_tricks import sliding_window_view

def zay_117(arr):
    output = []
    for row in sliding_window_view(arr, window_shape=(2,2)):
        for sq in row:
            output.append(np.hstack((sq[0, 0:2], sq[1, 0:2][::-1])).tolist())
    return output

# zay_117(arr1)
# [[0, 1, 3, 2]]

# zay_117(arr2)
# [[0, 1, 4, 3], [1, 2, 5, 4]]

# zay_117(arr3)
# [[0, 1, 3, 2], [2, 3, 5, 4]]
Answered By: 11574713
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.