NumPy Array Reshaping


Přetváření polí

Změna tvaru znamená změnu tvaru pole.

Tvar pole je počet prvků v každé dimenzi.

Změnou tvaru můžeme přidat nebo odebrat rozměry nebo změnit počet prvků v každém rozměru.


Změna tvaru z 1-D na 2-D

Příklad

Převeďte následující 1D pole s 12 prvky na 2D pole.

Nejvzdálenější dimenze bude mít 4 pole, každé se 3 prvky:

import numpy as np

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

newarr = arr.reshape(4, 3)

print(newarr)

Změna tvaru z 1-D na 3-D

Příklad

Převeďte následující 1D pole s 12 prvky na 3D pole.

Nejvzdálenější dimenze bude mít 2 pole, která obsahují 3 pole, každé se 2 prvky:

import numpy as np

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

newarr = arr.reshape(2, 3, 2)

print(newarr)


Můžeme se přetvořit do jakéhokoli tvaru?

Ano, pokud jsou prvky potřebné pro přetváření v obou tvarech stejné.

Můžeme přetvořit 1D pole s 8 prvky na 4 prvky ve 2 řádcích 2D pole, ale nemůžeme je přetvořit na 3 prvky 3 řádky 2D pole, protože by to vyžadovalo 3x3 = 9 prvků.

Příklad

Zkuste převést 1D pole s 8 prvky na 2D pole se 3 prvky v každém rozměru (způsobí chybu):

import numpy as np

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

newarr = arr.reshape(3, 3)

print(newarr)

Vrátí Kopírovat nebo Zobrazit?

Příklad

Zkontrolujte, zda je vrácené pole kopií nebo pohledem:

import numpy as np

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

print(arr.reshape(2, 4).base)

Výše uvedený příklad vrací původní pole, jedná se tedy o pohled.


Neznámý rozměr

Můžete mít jednu „neznámou“ dimenzi.

To znamená, že pro jednu z dimenzí v metodě změny tvaru nemusíte zadávat přesné číslo.

Předejte -1jako hodnotu a NumPy toto číslo vypočítá za vás.

Příklad

Převeďte 1D pole s 8 prvky na 3D pole s 2x2 prvky:

import numpy as np

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

newarr = arr.reshape(2, 2, -1)

print(newarr)

Poznámka: Nemůžeme přejít -1do více než jedné dimenze.


Zploštění polí

Zploštění pole znamená převod vícerozměrného pole na pole 1D.

Můžeme reshape(-1)k tomu použít.

Příklad

Převeďte pole na 1D pole:

import numpy as np

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

newarr = arr.reshape(-1)

print(newarr)

Poznámka: Existuje mnoho funkcí pro změnu tvarů polí v numpy flattena raveltaké pro přeskupení prvků rot90, flip, fliplratd flipud. Tyto funkce spadají do sekce Intermediate to Advanced numpy.


Otestujte se pomocí cvičení

Cvičení:

Ke změně tvaru pole z 1-D na 2-D použijte správnou metodu NumPy.

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

newarr = arr.(4, 3)