如何使用Python的Numpy库对数组进行插零上采样缩放
Numpy二维数组插零上缩放实现方法
核心需求为将原2×4数组的每个元素,映射到输出数组对应3×3子块的左上角位置,其余位置补0,最终输出总尺寸为6×12。
方法1:numpy.kron 实现
你之前使用kron未得到正确结果,大概率是构造的核不符合要求,只需构造仅左上角为1的3×3核即可:
import numpy as np # 原始输入数组 arr = np.array([[1,2,3,4], [9,8,7,6]]) # 构造3×3的核,仅左上角位置为1 kernel = np.zeros((3,3), dtype=arr.dtype) kernel[0, 0] = 1 # 计算克罗内克积得到目标数组 res = np.kron(arr, kernel) print(res)
方法2:索引直接赋值(性能更高、逻辑更直观)
先创建对应尺寸的全零数组,再按固定步长把原数组元素赋值到对应位置即可:
import numpy as np arr = np.array([[1,2,3,4], [9,8,7,6]]) h, w = arr.shape scale = 3 # 上缩放倍数 # 初始化全零结果数组 res = np.zeros((h*scale, w*scale), dtype=arr.dtype) # 步长为3,将原数组元素赋值到对应左上角位置 res[::scale, ::scale] = arr print(res)
两种方法均可得到你要求的输出结果。
内容的提问来源于stack exchange,提问作者CC7052
相关产品推荐
相关产品推荐

