You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现WxH数组按2的幂次缩放,原数值对应填充扩大区域

数组2的幂次缩放实现逻辑

这个需求属于整数倍最近邻上采样,缩放系数为2的正整数次幂,核心是原数组的每个元素会对应填充新数组中s×s的连续同值区域(s为缩放系数),具体实现步骤如下:

  • 首先确定基础参数
    先明确缩放系数s:如果传入的是幂次k,直接计算s = 2 ** k即可。设原数组高度为H、宽度为W,那么新数组的尺寸就是(H*s) × (W*s)。
  • 行维度拉伸
    遍历原数组的每一行,将该行的每个元素都连续重复s次,生成拉伸后的单行数据。比如原行[1,2]、s=2时,拉伸后行就是[1,1,2,2]。
  • 列维度拉伸
    将上一步生成的每一条拉伸后的行,连续重复写入新数组s次,完成纵向的拉伸。比如上面的拉伸行[1,1,2,2]、s=2时,就连续往新数组里写2次该行。

代码示例

原生Python实现(无第三方依赖)

def power_of_two_scale(old_array, scale_power):
    # scale_power为2的幂次,比如缩放2倍传1,缩放4倍传2
    scale = 2 ** scale_power
    new_array = []
    for raw_row in old_array:
        # 行内元素重复
        scaled_row = [item for item in raw_row for _ in range(scale)]
        # 整行重复加入新数组
        for _ in range(scale):
            new_array.append(scaled_row.copy())
    return new_array

# 测试验证
old_array = [[1,2], [3,4]]
# 缩放2倍,输出和题目示例一致
print(power_of_two_scale(old_array, 1))

Numpy高效实现(适合大数据量场景)

import numpy as np
def power_of_two_scale_np(old_array, scale_power):
    scale = 2 ** scale_power
    arr = np.array(old_array)
    # 先沿纵向重复,再沿横向重复
    scaled_arr = np.repeat(np.repeat(arr, scale, axis=0), scale, axis=1)
    return scaled_arr.tolist()

内容的提问来源于stack exchange,提问作者bob marsh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:45:00