Python中合并不同尺寸数组生成指定5×8结果的方法
Python 不同尺寸数组的合并实现方法
实现两个形状为(5,5)和(3,3)的数组合并为指定5×8格式数组的核心逻辑是:先将小尺寸数组通过补零对齐到与大数组相同的行数,再完成横向拼接。这类场景使用NumPy处理代码简洁、计算效率高,具体步骤如下:
- 第一步:导入依赖,初始化目标数组
import numpy as np arr_large = np.full((5, 5), 5.0) # 5行5列、元素全为5的数组 arr_small = np.full((3, 3), 1.0) # 3行3列、元素全为1的数组
- 第二步:给小数组补零,对齐到大数组高度
小数组比大数组少2行,仅在小数组的末尾补2行全零元素,不改动原有列数:
# 计算需要补充的零行数 pad_length = arr_large.shape[0] - arr_small.shape[0] # 执行补零:上侧不补行、下侧补pad_length行;左右侧均不补列 arr_small_aligned = np.pad( arr_small, pad_width=((0, pad_length), (0, 0)), constant_values=0 )
- 第三步:横向拼接两个已对齐的数组
merged_result = np.hstack([arr_large, arr_small_aligned])
执行后得到的merged_result完全匹配预期的格式:
[[5. 5. 5. 5. 5. 1. 1. 1.] [5. 5. 5. 5. 5. 1. 1. 1.] [5. 5. 5. 5. 5. 1. 1. 1.] [5. 5. 5. 5. 5. 0. 0. 0.] [5. 5. 5. 5. 5. 0. 0. 0.]]
补充说明:如果不依赖NumPy,纯Python列表也可以手动实现——先给小列表对象的末尾追加两个长度为3的全零子列表,再逐行将大列表的每一行与补零后的小列表对应行做列表拼接。但处理大尺寸数组时,NumPy的运行效率远高于原生列表实现。
内容的提问来源于stack exchange,提问作者Ksensei
相关产品推荐
相关产品推荐

