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()
.