如何用Python将一维数组循环填充至5×5全1矩阵?
Python实现一维数组循环填充5×5矩阵
需求说明
现有一个5×5的全1矩阵:
[[1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.]]
以及一个包含10个元素的一维数组:
[0.72222515 1.25003225 0.11767353 0.16121767 0.27926356 0.78412963 0.08371721 1.77536532 1.67636045 0.55364691]
需要将该一维数组按前5个元素为第一行、后5个为第二行,循环重复这两行的规则,填充为目标5×5矩阵:
[[0.72222515 1.25003225 0.11767353 0.16121767 0.27926356] [0.78412963 0.08371721 1.77536532 1.67636045 0.55364691] [0.72222515 1.25003225 0.11767353 0.16121767 0.27926356] [0.78412963 0.08371721 1.77536532 1.67636045 0.55364691] [0.72222515 1.25003225 0.11767353 0.16121767 0.27926356]]
实现方法
方法1:利用numpy的reshape和tile快速实现
numpy提供了便捷的数组操作工具,适合处理这类矩阵填充需求:
import numpy as np # 定义原始一维数组 arr = np.array([0.72222515, 1.25003225, 0.11767353, 0.16121767, 0.27926356, 0.78412963, 0.08371721, 1.77536532, 1.67636045, 0.55364691]) # 将一维数组拆分为2行5列的基础块 block = arr.reshape(2, 5) # 重复基础块3次(得到6行),截取前5行即为目标矩阵 result = np.tile(block, (3, 1))[:5] print(result)
方法2:手动循环构造(无需numpy)
如果不想依赖第三方库,也可以用纯Python列表操作实现:
# 定义原始一维数组 arr = [0.72222515, 1.25003225, 0.11767353, 0.16121767, 0.27926356, 0.78412963, 0.08371721, 1.77536532, 1.67636045, 0.55364691] # 拆分出两个基础行 row1 = arr[:5] row2 = arr[5:] # 循环生成5行,奇数行用row1,偶数行用row2 result = [row1 if i % 2 == 0 else row2 for i in range(5)] for row in result: print(row)
内容的提问来源于stack exchange,提问作者leafll
相关产品推荐
相关产品推荐

