Slušaj robot čitača

Preoblikovanje i rotiranje podataka

Sadržaj strane:

u ML-u moramo poravnjati naše ulazne podatke sa ML algoritmom, kako bi ovi dali ispravan izlaz. Iz tog razloga je nekada potrebno promeniti oblik naših podataka

Promena oblika podataka

Koristićemo opet ndarray-e a2 i a3:

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

 [[10, 11, 12],
  [13, 14, 15],
  [16, 17, 18]]]),
(2, 3, 3))

Ako probamo da pomnožimo ova dva ndarray-a:

a2 * a3
------------------------------------------------------------------------ ValueError Traceback (most recent call last)
<ipython-input-22-37d8620f1b2c> in <module>
----> 1 a2 * a3

ValueError: operands could not be broadcast together with shapes (2,3) (2,3,3)

Broadcast je procces sličan mapiranju, gde se elementi jednog array-a mapiraju preko elemenata drugog array-a, naravno da bi to uspelo, array-evi moraju imati kompatabilan oblik, što a2 i a3 nemaju.

Primenom .reshape() metode, možemo promeniti oblik a2, tako da bude kompatabilan sa a3, te da ga možemo broadcastovati preko njega:

a2R = a2.reshape(2,3,1)
a2R
array([[[1],
 [2],
 [3]],

[[4],
 [5],
 [6]]])

I sada ih možemo pomnožiti:

a2R * a3
array([[[ 1, 2, 3],
 [ 8, 10, 12],
 [ 21, 24, 27]],

    [[ 40, 44, 48],
 [ 65, 70, 75],
 [ 96, 102, 108]]])
array([[[ 1, 2, 3],
[ 8, 10, 12],
[ 21, 24, 27]],

[[ 40, 44, 48],
[ 65, 70, 75],
[ 96, 102, 108]]])

Članak prvi put objavljen: 7.5.2021.

Poslednje izmene: 31.1.2022.

Autor: k.

Top