Home > Back-end >  Expand Array w/ duplicates (numpy, python)
Expand Array w/ duplicates (numpy, python)

Time:10-15

If I have a 2 x 2 array like this:

1   2

3   4

and i want to double it into a 4 x 4 array like this:

1   1   2   2
1   1   2   2
3   3   4   4
3   3   4   4

or triple it into a 6 x 6 array like this:

1   1   1   2   2   2
1   1   1   2   2   2
1   1   1   2   2   2
3   3   3   4   4   4
3   3   3   4   4   4
3   3   3   4   4   4

etc etc... how would I go about doing that?

CodePudding user response:

Not sure if it's the best solution but definitely works =p (you could use just one function as well, I divided it to make it easier to read)

matrix = [[1, 2], [3, 4]]


def expand_array(input, multiplyer):
    return [x for x in input for _ in range(multiplyer)]


def expand_matrix(input, multiplyer):
    return [expand_array(x, multiplyer) for x in input for _ in range(multiplyer)]


print(matrix)
print(expand_matrix(matrix, 1))
print(expand_matrix(matrix, 2))
print(expand_matrix(matrix, 3))
print(expand_matrix(matrix, 4))

"""
[[1, 2], [3, 4]]
[[1, 2], [3, 4]]
[[1, 1, 2, 2], [1, 1, 2, 2], [3, 3, 4, 4], [3, 3, 4, 4]]
[[1, 1, 1, 2, 2, 2], [1, 1, 1, 2, 2, 2], [1, 1, 1, 2, 2, 2], [3, 3, 3, 4, 4, 4], [3, 3, 3, 4, 4, 4], [3, 3, 3, 4, 4, 4]]
[[1, 1, 1, 1, 2, 2, 2, 2], [1, 1, 1, 1, 2, 2, 2, 2], [1, 1, 1, 1, 2, 2, 2, 2], [1, 1, 1, 1, 2, 2, 2, 2], [3, 3, 3, 3, 4, 4, 4, 4], [3, 3, 3, 3, 4, 4, 4, 4], [3, 3, 3, 3, 4, 4, 4, 4], [3, 3, 3, 3, 4, 4, 4, 4]]
"""

CodePudding user response:

You can use np.repeat:


a = [[1,2],
     [3,4]]

dim_expand = 2 # double

b = np.repeat(a, dim_expand, axis=0).repeat(dim_expand, axis=1)

print(b)

"""
[[1 1 2 2]
 [1 1 2 2]
 [3 3 4 4]
 [3 3 4 4]]

"""

dim_expand = 3 # triple

b = np.repeat(a, dim_expand, axis=0).repeat(dim_expand, axis=1)

print(b)
        
"""
[[1 1 1 2 2 2]
 [1 1 1 2 2 2]
 [1 1 1 2 2 2]
 [3 3 3 4 4 4]
 [3 3 3 4 4 4]
 [3 3 3 4 4 4]]
"""

  • Related