субота, 1 травня 2021 р.

Зміна форми масиву - shape(), reshape(), ravel(), resize()

 
np.shape(a)
повертає кортеж довжин розмірів масиву
   
np.shape(np.ones((3,3)))
(3, 3)
або
   
np.ones((3,3)).shape
(3, 3)
Функція
   
np.reshape(a, newshape, order='C')
змінює форму масиву на нову яка вказана у кортежі (або списку) newshape. Необов'язковий параметр order визначає порядок зберіганя масиву в пам'яті - за рядками - 'C', за стовпчиками - 'F'

Якщо одне із значень newshape дорівнює -1, то воно буде визначене автоматично

 
a = np.array([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]])
np.reshape(a,(3,4))
array([[1, 1, 1, 1],
       [2, 2, 2, 2],
       [3, 3, 3, 3]])
np.reshape(a,(-1,1))
array([[1],
       [1],
       [1],
       [1],
       [2],
       [2],
       [2],
       [2],
       [3],
       [3],
       [3],
       [3]])
np.reshape(a,-1)
array([1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3])
Інший рівноцінний запис
   
a.reshape(newshape)
Якщо нові розміри не узгоджені (різна кількість елементів в двох масивах) з старими, то видається повімлення про помилку.

Функція

   
np.ravel(a, order='C')
повертає сплющений до однієї осі масив, еквівалентна до np.reshape(a,-1).

Функції np.resize(a,newshape) i a.resize(a,newshape) діють аналогічно, крім випадку неузгодження форм нового і старого масивів. У цій ситуації, при збільшеному розмірі, вони заповнюють новий масив копіями старого масиву або нулями, відповідно.

   
a = np.array([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]])
np.resize(a, [10, 10])
array([[1, 1, 1, 1, 2, 2, 2, 2, 3, 3],
       [3, 3, 1, 1, 1, 1, 2, 2, 2, 2],
       [3, 3, 3, 3, 1, 1, 1, 1, 2, 2],
       [2, 2, 3, 3, 3, 3, 1, 1, 1, 1],
       [2, 2, 2, 2, 3, 3, 3, 3, 1, 1],
       [1, 1, 2, 2, 2, 2, 3, 3, 3, 3],
       [1, 1, 1, 1, 2, 2, 2, 2, 3, 3],
       [3, 3, 1, 1, 1, 1, 2, 2, 2, 2],
       [3, 3, 3, 3, 1, 1, 1, 1, 2, 2],
       [2, 2, 3, 3, 3, 3, 1, 1, 1, 1]])
a.resize(10,10)# виконується на місці!
a
array([[1, 1, 1, 1, 2, 2, 2, 2, 3, 3],
       [3, 3, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])

Немає коментарів:

Дописати коментар