如何为numpy数组各侧填充0?附二维numpy数组示例
嘿,这两个问题用NumPy的np.pad()函数就能完美解决,我给你拆解清楚:
1. 如何在所有侧为numpy数组填充0?
不管你的数组是一维、二维还是更高维,np.pad()都能帮你给所有侧统一填充0。核心是设置pad_width参数:
- 如果是一维数组,比如
arr = np.array([1,2,3]),想给左右各填2个0,直接写:import numpy as np arr = np.array([1,2,3]) padded_arr = np.pad(arr, pad_width=2, mode='constant', constant_values=0) # 结果:array([0, 0, 1, 2, 3, 0, 0]) - 如果是多维数组,想给所有维度的前后都填充相同数量的0,比如给三维数组所有侧填1层0,
pad_width=1就可以,函数会自动适配每个维度。
2. 如何在四个侧为二维numpy数组填充0?
针对你给出的示例数组a = np.array([(1, 2, 3),(4, 5, 6)]),我们可以精准控制上下左右的填充数量:
先看原数组:
import numpy as np a = np.array([(1, 2, 3),(4, 5, 6)]) print(a) # 输出: # [[1 2 3] # [4 5 6]]
如果想给上下各填1行0,左右各填1列0,代码如下:
padded_a = np.pad(a, pad_width=((1,1), (1,1)), mode='constant', constant_values=0) print(padded_a) # 结果: # [[0 0 0 0 0] # [0 1 2 3 0] # [0 4 5 6 0] # [0 0 0 0 0]]
参数解释:
pad_width=((1,1), (1,1)):第一个元组(1,1)代表行维度(上下),前面填1行,后面填1行;第二个元组(1,1)代表列维度(左右),前面填1列,后面填1列。mode='constant':表示填充固定值,这里我们指定constant_values=0,就是填充0。
要是你只想填充某几个侧,比如只填上面1行和右边1列,只需要把pad_width改成((1,0), (0,1))就行,非常灵活!
内容的提问来源于stack exchange,提问作者Shayaan
相关产品推荐
相关产品推荐

