numpy.pad#

numpy.pad(array, pad_width, mode='constant', **kwargs)[原始碼]#

填充陣列。

參數:
arrayarray_like,秩為 N

要填充的陣列。

pad_width{sequence, array_like, int}

每個軸邊緣填充的值的數量。((before_1, after_1), ... (before_N, after_N)) 每個軸的唯一填充寬度。(before, after)((before, after),) 對於每個軸產生相同的前後填充。(pad,)int 是所有軸之前 = 之後 = 填充寬度的快捷方式。

modestr 或 function,選用

以下字串值之一或使用者提供的函數。

‘constant’ (預設)

以常數值填充。

‘edge’

以陣列的邊緣值填充。

‘linear_ramp’

以 end_value 和陣列邊緣值之間的線性斜坡填充。

‘maximum’

以沿每個軸的向量的全部或部分的最大值填充。

‘mean’

以沿每個軸的向量的全部或部分的平均值填充。

‘median’

以沿每個軸的向量的全部或部分的中位數值填充。

‘minimum’

以沿每個軸的向量的全部或部分的最小值填充。

‘reflect’

以向量在沿每個軸的向量的第一個和最後一個值上鏡像反射的反射填充。

‘symmetric’

以向量沿陣列邊緣鏡像反射的反射填充。

‘wrap’

以向量沿軸的環繞填充。第一個值用於填充末尾,最後一個值用於填充開頭。

‘empty’

以未定義的值填充。

<function>

填充函數,請參閱「注意事項」。

stat_lengthsequence 或 int,選用

用於 ‘maximum’、‘mean’、‘median’ 和 ‘minimum’。用於計算統計值的每個軸邊緣的值的數量。

((before_1, after_1), ... (before_N, after_N)) 每個軸的唯一統計長度。

(before, after)((before, after),) 對於每個軸產生相同的前後統計長度。

(stat_length,)int 是所有軸的 before = after = statistic 長度的快捷方式。

預設值為 None,以使用整個軸。

constant_valuessequence 或 scalar,選用

用於 ‘constant’。為每個軸設定填充值的值。

((before_1, after_1), ... (before_N, after_N)) 每個軸的唯一填充常數。

(before, after)((before, after),) 對於每個軸產生相同的前後常數。

(constant,)constant 是所有軸的 before = after = constant 的快捷方式。

預設值為 0。

end_valuessequence 或 scalar,選用

用於 ‘linear_ramp’。用於線性斜坡的結束值的值,以及將形成填充陣列的邊緣的值。

((before_1, after_1), ... (before_N, after_N)) 每個軸的唯一結束值。

(before, after)((before, after),) 對於每個軸產生相同的前後結束值。

(constant,)constant 是所有軸的 before = after = constant 的快捷方式。

預設值為 0。

reflect_type{‘even’, ‘odd’},選用

用於 ‘reflect’ 和 ‘symmetric’。 ‘even’ 風格是預設值,具有圍繞邊緣值的不變反射。對於 ‘odd’ 風格,陣列的擴展部分是通過從邊緣值的兩倍減去反射值來建立的。

返回:
padndarray

填充後的陣列,其秩等於 array,且形狀根據 pad_width 增加。

注意事項

對於秩大於 1 的陣列,後續軸的某些填充是根據先前軸的填充計算得出的。這最容易用秩為 2 的陣列來思考,其中填充陣列的角是通過使用來自第一個軸的填充值來計算的。

填充函數(如果使用)應就地修改秩為 1 的陣列。它具有以下簽名

padding_func(vector, iaxis_pad_width, iaxis, kwargs)

其中

vectorndarray

已用零填充的秩為 1 的陣列。填充值為 vector[:iaxis_pad_width[0]] 和 vector[-iaxis_pad_width[1]:]。

iaxis_pad_widthtuple

一個由 2 個整數組成的元組,iaxis_pad_width[0] 表示向量開頭填充的值的數量,其中 iaxis_pad_width[1] 表示向量末尾填充的值的數量。

iaxisint

目前正在計算的軸。

kwargsdict

函數需要的任何關鍵字引數。

範例

>>> import numpy as np
>>> a = [1, 2, 3, 4, 5]
>>> np.pad(a, (2, 3), 'constant', constant_values=(4, 6))
array([4, 4, 1, ..., 6, 6, 6])
>>> np.pad(a, (2, 3), 'edge')
array([1, 1, 1, ..., 5, 5, 5])
>>> np.pad(a, (2, 3), 'linear_ramp', end_values=(5, -4))
array([ 5,  3,  1,  2,  3,  4,  5,  2, -1, -4])
>>> np.pad(a, (2,), 'maximum')
array([5, 5, 1, 2, 3, 4, 5, 5, 5])
>>> np.pad(a, (2,), 'mean')
array([3, 3, 1, 2, 3, 4, 5, 3, 3])
>>> np.pad(a, (2,), 'median')
array([3, 3, 1, 2, 3, 4, 5, 3, 3])
>>> a = [[1, 2], [3, 4]]
>>> np.pad(a, ((3, 2), (2, 3)), 'minimum')
array([[1, 1, 1, 2, 1, 1, 1],
       [1, 1, 1, 2, 1, 1, 1],
       [1, 1, 1, 2, 1, 1, 1],
       [1, 1, 1, 2, 1, 1, 1],
       [3, 3, 3, 4, 3, 3, 3],
       [1, 1, 1, 2, 1, 1, 1],
       [1, 1, 1, 2, 1, 1, 1]])
>>> a = [1, 2, 3, 4, 5]
>>> np.pad(a, (2, 3), 'reflect')
array([3, 2, 1, 2, 3, 4, 5, 4, 3, 2])
>>> np.pad(a, (2, 3), 'reflect', reflect_type='odd')
array([-1,  0,  1,  2,  3,  4,  5,  6,  7,  8])
>>> np.pad(a, (2, 3), 'symmetric')
array([2, 1, 1, 2, 3, 4, 5, 5, 4, 3])
>>> np.pad(a, (2, 3), 'symmetric', reflect_type='odd')
array([0, 1, 1, 2, 3, 4, 5, 5, 6, 7])
>>> np.pad(a, (2, 3), 'wrap')
array([4, 5, 1, 2, 3, 4, 5, 1, 2, 3])
>>> 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
>>> a = np.arange(6)
>>> a = a.reshape((2, 3))
>>> np.pad(a, 2, pad_with)
array([[10, 10, 10, 10, 10, 10, 10],
       [10, 10, 10, 10, 10, 10, 10],
       [10, 10,  0,  1,  2, 10, 10],
       [10, 10,  3,  4,  5, 10, 10],
       [10, 10, 10, 10, 10, 10, 10],
       [10, 10, 10, 10, 10, 10, 10]])
>>> np.pad(a, 2, pad_with, padder=100)
array([[100, 100, 100, 100, 100, 100, 100],
       [100, 100, 100, 100, 100, 100, 100],
       [100, 100,   0,   1,   2, 100, 100],
       [100, 100,   3,   4,   5, 100, 100],
       [100, 100, 100, 100, 100, 100, 100],
       [100, 100, 100, 100, 100, 100, 100]])