English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

División de array de NumPy

La división es la operación inversa de la conexión.
Conexión (Joining) es la combinación de varios arrays en uno, división (Spliting) es la división de un array en varios.

Las funciones básicas de división de arrays son las siguientes:

FunciónArrays y operaciones
splitDividir un array en varios subarrays
hsplitDividir un array en varios subarrays horizontales (por columnas)
vsplitDividir un array en varios subarrays verticales (por filas)

numpy.split

El formato de la función numpy.split para dividir un array en subarrays a lo largo de un eje específico es el siguiente:

numpy.split(ary, indices_or_sections, axis)

Descripción de los parámetros:

ary: array que se divideindices_or_sections: es un entero, se dividirá por igual, si es un array, se dividirá en las posiciones del eje (abierto a la izquierda, cerrado a la derecha) axis: a lo largo de qué dimensión realizar el corte, por defecto 0, cortar horizontalmente. Si1Al cortar verticalmente

import numpy as np
a = np.arange(15)
print('Primera matriz: ')
print(a)
print('\n')
print('Dividir el array en tres subarrays de igual tamaño:')
b = np.split(a,5)
print(b)
print('\n')
print('Dividir el array en la posición indicada en un array unidimensional:')
b = np.split(a, [4,7])
print(b)

El resultado de la salida es:

Primera matriz:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]]
Dividir el array en tres subarrays de igual tamaño:
[array([0, 1, 2)) array([3, 4, 5)) array([6, 7, 8)) array([ 9, 10, 11)) array([12, 13, 14]]
Dividir el array en la posición indicada en un array unidimensional:
[array([0, 1, 2, 3)) array([4, 5, 6)) array([ 7, 8, 9, 10, 11, 12, 13, 14]]

Cuando los elementos del array sean menos de la cantidad requerida, se necesita usarFunción array_splitSe ajustará desde el final.

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 4)
print(newarr)

El resultado de la salida es:

[array([1, 2)) array([3, 4)) array([5)) array([6]]
Atención:Al usar el método split(), cuando los elementos del array de origen son pocos y no se utilizan para dividir, no ajustará los elementos, como en el ejemplo anterior, array_split() funciona normalmente, pero split() fallará.

numpy.hsplit

La función numpy.hsplit se utiliza para dividir el array horizontalmente, dividiendo el array original en la cantidad especificada de arrays de la misma forma.

import numpy as np
harr = np.floor(10 * np.random.random(2, 8))
print('Array original: ')
print(harr)
 
print('Después de dividir: ')
print(np.hsplit(harr, 4))

El resultado de la salida es:

Array original:
[7. 9. 2. 6. 8. 7. 4. 5.]
 [2. 5. 3. 5. 9. 4. 1. 3.]]
Después de dividir:
[array([7. 9.],
       [2. 5.]]2. 6.],
       [3. 5.]]8. 7.],
       [9. 4.]]4. 5.],
       [1. 3.]

numpy.vsplit

numpy.vsplit divide el array a lo largo del eje vertical, su modo de división es el mismo que el de hsplit.

import numpy as np
a = np.arange(16).reshape(4,4)
print('Primera matriz: ')
print(a)
print('\n')
print('División vertical: ')
b = np.vsplit(a,2)
print(b)

El resultado de la salida es:

Primera matriz:
[[0 1 2 3]]
 [ 4 5 6 7]]
 [ 8 9 10 11]]
 [12 13 14 15]]
División vertical:
[array([[ 1, 2, 3],
       [4, 5, 6, 7]]] 8, 9, 10, 11],
       [12, 13, 14, 15]]]