NumPy dělicí pole
Rozdělení NumPy polí
Dělení je obrácená operace spojování.
Spojení sloučí více polí do jednoho a rozdělení rozdělí jedno pole na více.
Používáme array_split()
pro rozdělení polí, předáme mu pole, které chceme rozdělit a počet rozdělení.
Příklad
Rozdělte pole na 3 části:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
newarr =
np.array_split(arr, 3)
print(newarr)
Poznámka: Vrácená hodnota je pole obsahující tři pole.
Pokud má pole méně prvků, než je požadováno, upraví se podle toho od konce.
Příklad
Rozdělte pole na 4 části:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
newarr =
np.array_split(arr, 4)
print(newarr)
Poznámka: Metodu máme také k split()
dispozici, ale neupraví prvky, když je prvků ve zdrojovém poli méně pro rozdělení, jako je tomu v příkladu výše, array_split()
fungovala správně, ale
split()
selhala.
Rozdělit na pole
Návratovou hodnotou array_split()
metody je pole obsahující každé rozdělení jako pole.
Pokud rozdělíte pole na 3 pole, můžete k nim přistupovat z výsledku stejně jako k jakémukoli prvku pole:
Příklad
Přístup k rozděleným polím:
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])
Rozdělení 2-D polí
Při rozdělování 2D polí použijte stejnou syntaxi.
Použijte array_split()
metodu, předejte pole, které chcete rozdělit, a počet rozdělení, které chcete provést.
Příklad
Rozdělte 2-D pole na tři 2-D pole.
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)
Výše uvedený příklad vrací tři 2D pole.
Podívejme se na další příklad, tentokrát každý prvek ve 2-D polích obsahuje 3 prvky.
Příklad
Rozdělte 2-D pole na tři 2-D pole.
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)
Výše uvedený příklad vrací tři 2D pole.
Kromě toho můžete určit, kolem které osy chcete provést rozdělení.
Níže uvedený příklad také vrací tři 2D pole, ale jsou rozdělena podél řádku (osa=1).
Příklad
Rozdělte 2-D pole na tři 2-D pole podél řad.
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)
Alternativním řešením je použití hsplit()
opačného řešení
hstack()
Příklad
Tuto metodu použijte hsplit()
k rozdělení 2-D pole na tři 2-D pole podél řad.
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)
Poznámka: Podobné alternativy vstack()
a
dstack()
jsou k dispozici jako
vsplit()
a
dsplit()
.