Модулът numpy на Python предоставя функция, наречена numpy.pad(), за извършване на подпълване в масива. Тази функция има няколко задължителни и незадължителни параметъра.
Синтаксис:
numpy.pad(array, pad_width, mode='constant', **kwargs)
Параметри:
масив: array_like
Това е изходният масив, който искаме да подпълним.
pad_width: int, поредица или array_like
Този параметър определя броя на стойностите, които се допълват до краищата на всяка ос. Уникалните ширини на подложките за всяка ос се дефинират като (before_1, after_1), (before_2, after_2), ... (before_N, after_N)). За всяка ос, ((преди, след),) ще се третира по същия начин като преди и след тампон. За всички оси int, или (pad,) е пряк път към преди = след = ширина на пад.
режим: str или функция (по избор)
Този параметър има една от следните низови стойности:
'константа' (по подразбиране)
байтове към низ python
Ако присвоим постоянна стойност на параметъра на режима, подпълването ще бъде направено с постоянна стойност.
'ръб, край'
Това е стойността на ръба на масива. Подложката ще бъде направена с тази стойност на ръба.
'linear_ramp'
Тази стойност се използва за извършване на подпълване с линейната рампа между стойността на ръба и крайната стойност.
'максимум'
Тази стойност на параметъра изпълнява подпълване, като използва максималната стойност на векторна част или всички, по всяка ос.
'означава'
Тази стойност на параметъра изпълнява подпълване чрез средната стойност на векторна част или всички, по всяка ос.
'Медиана'
Тази стойност на параметъра изпълнява подпълване чрез средната стойност на векторна част или всички, по протежение на всяка ос.
'минимум'
Тази стойност на параметъра изпълнява подпълване чрез минималната стойност на векторна част или всички, по протежение на всяка ос.
'отразявам'
Тази стойност допълва масива чрез векторно отражение, което се отразява огледално върху началните и крайните векторни стойности по протежение на всяка ос.
'симетричен'
Тази стойност се използва за допълване на масива чрез векторно отражение, което се отразява огледално по ръба на масива.
'обвивам'
Тази стойност се използва за извършване на подпълване на масива чрез обвиване на вектора по оста. Началните стойности се използват за допълване на края, а крайните стойности допълват началото.
'празен'
Тази стойност се използва за допълване на масива с недефинирани стойности.
stat_length: int или последователност (по избор)
Този параметър се използва в „максимум“, „минимум“, „средно“, „медиана“. Той определя броя на стойностите на всяка ос на ръба, използвани за изчисляване на статичната стойност.
постоянни_стойности: скалар или последователност (по избор)
Този параметър се използва в „константа“. Той дефинира стойностите за задаване на подплатени стойности за всяка ос.
крайни_стойности: скалар или последователност (по избор)
Този параметър се използва в 'linear_ramp'. Той дефинира стойностите, които се използват за последната стойност на linear_ramp и ще формира ръба на подплатения масив.
отразяващ_тип: четен или нечетен (по избор)
Този параметър се използва в „symmetric“ и „reflect“. По подразбиране, reflect_type е 'even' с непроменено отражение около стойността на ръба. Чрез изваждане на отразените стойности от два пъти стойността на ръба, разширената част на масива се създава за „странния“ стил.
Се завръща:
тампон: ndarray
Тази функция връща подплатения масив с ранг, равен на масива, чиято форма се увеличава според pad_width.
Пример 1:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3, 2), 'constant', constant_values=(6, 4)) y
Изход:
array([6, 6, 6, 1, 3, 2, 5, 4, 4, 4])
В горния код
- Импортирахме numpy с псевдоним np.
- Създадохме списък със стойности x.
- Декларирахме променливата y и присвоихме върнатата стойност на функцията np.pad().
- Предадохме списъка x, pad_width, задайте режима на постоянен и постоянни_стойности във функцията.
- Накрая се опитахме да отпечатаме стойността на y.
В изхода той показва ndarray, подплатен с дефинирания размер и стойности.
Пример 2:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3, 2), 'edge') y
Изход:
array([1, 1, 1, 1, 3, 2, 5, 4, 4, 4])
Пример 3:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3, 2), 'linear_ramp', end_values=(-4, 5)) y
Изход:
array([-4, -2, 0, 1, 3, 2, 5, 4, 4, 5])
Пример 4:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3,), 'maximum') y
Изход:
array([5, 5, 5, 1, 3, 2, 5, 4, 5, 5, 5])
Пример 5:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3,), 'mean') y
Изход:
array([3, 3, 3, 1, 3, 2, 5, 4, 3, 3, 3])
Пример 6:
import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3,), 'median') y
Изход:
array([3, 3, 3, 1, 3, 2, 5, 4, 3, 3, 3])
Пример 7:
import numpy as np a = [[1, 2], [3, 4]] y = np.pad(x, (3,), 'minimum') y
Изход:
array([[1, 1, 1, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1], [3, 3, 3, 3, 4, 3, 3], [1, 1, 1, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1]])
Пример 8:
import numpy as np def pad_with(vector, pad_width, iaxis, kwargs): padding_value = kwargs.get('padder', 10) vector[:pad_width[0]] = padding_value vector[-pad_width[1]:] = padding_value x = np.arange(6) x = x.reshape((3, 2)) y = np.pad(x, 3, pad_with) y
Изход:
array([41, 31, 21, 11, 21, 31, 41, 51, 41, 31])
В горния код
- Импортирахме numpy с псевдоним np.
- Създадохме функция pad_with с вектор , pad_width , iaxis , и kwargs .
- Ние сме декларирали променливата pad_value, за да получим стойности за подпълване от получи() функция.
- Предадохме стойностите за подпълване на частта от вектора.
- Създадохме масив x с помощта на функцията np.arange() и променихме формата с помощта на функцията reshape().
- Декларирахме променлива y и присвоихме върнатата стойност на функцията np.pad().
- Предадохме списъка x и pad_width във функцията
- Накрая се опитахме да отпечатаме стойността на y.
В изхода той показва ndarray, подплатен с дефинирания размер и стойности.
суматор пълен суматор
Пример 9:
import numpy as np import numpy as np def pad_with(vector, pad_width, iaxis, kwargs): padding_value = kwargs.get('padder', 10) vector[:pad_width[0]] = padding_value vector[-pad_width[1]:] = padding_value x = np.arange(6) x = x.reshape((3, 2)) np.pad(x, 3, pad_with)
Изход:
array([[10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 0, 1, 10, 10, 10], [10, 10, 10, 2, 3, 10, 10, 10], [10, 10, 10, 4, 5, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10]])
Пример 10:
import numpy as np import numpy as np def pad_with(vector, pad_width, iaxis, kwargs): ... pad_value = kwargs.get('padder', 10) ... vector[:pad_width[0]] = pad_value ... vector[-pad_width[1]:] = pad_value x = np.arange(6) x = x.reshape((3, 2)) np.pad(x, 3, pad_with, padder=100)
Изход:
array([[100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 0, 1, 100, 100, 100], [100, 100, 100, 2, 3, 100, 100, 100], [100, 100, 100, 4, 5, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100]])