Matriz de divisão NumPy


Dividindo matrizes NumPy

A divisão é a operação inversa da junção.

A junção mescla vários arrays em um e a divisão quebra um array em vários.

Usamos array_split()para dividir arrays, passamos o array que queremos dividir e o número de divisões.

Exemplo

Divida a matriz em 3 partes:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])

newarr = np.array_split(arr, 3)

print(newarr)

Nota: O valor de retorno é um array contendo três arrays.

Se a matriz tiver menos elementos do que o necessário, ela será ajustada do final de acordo.

Exemplo

Divida a matriz em 4 partes:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])

newarr = np.array_split(arr, 4)

print(newarr)

Nota: Também temos o método split()disponível, mas ele não ajustará os elementos quando os elementos estiverem menos na matriz de origem para divisão como no exemplo acima, array_split()funcionou corretamente, mas split()falharia.



Dividir em matrizes

O valor de retorno do array_split()método é um array contendo cada divisão como um array.

Se você dividir um array em 3 arrays, poderá acessá-los a partir do resultado como qualquer elemento do array:

Exemplo

Acesse os arrays divididos:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])

newarr = np.array_split(arr, 3)

print(newarr[0])
print(newarr[1])
print(newarr[2])

Dividindo Arrays 2D

Use a mesma sintaxe ao dividir matrizes 2D.

Use o array_split()método, passe o array que deseja dividir e o número de divisões que deseja fazer.

Exemplo

Divida a matriz 2-D em três matrizes 2-D.

import numpy as np

arr = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])

newarr = np.array_split(arr, 3)

print(newarr)

O exemplo acima retorna três arrays 2-D.

Vejamos outro exemplo, desta vez cada elemento nos arrays 2-D contém 3 elementos.

Exemplo

Divida a matriz 2-D em três matrizes 2-D.

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])

newarr = np.array_split(arr, 3)

print(newarr)

O exemplo acima retorna três arrays 2-D.

Além disso, você pode especificar em qual eixo deseja fazer a divisão.

O exemplo abaixo também retorna três matrizes 2-D, mas elas são divididas ao longo da linha (eixo=1).

Exemplo

Divida a matriz 2-D em três matrizes 2-D ao longo das linhas.

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])

newarr = np.array_split(arr, 3, axis=1)

print(newarr)

Uma solução alternativa é usar o hsplit()oposto de hstack()

Exemplo

Use o hsplit()método para dividir a matriz 2D em três matrizes 2D ao longo das linhas.

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])

newarr = np.hsplit(arr, 3)

print(newarr)

Nota: Alternativas semelhantes para vstack()e dstack()estão disponíveis como vsplit()e dsplit().