Python中如何将19×3矩阵填充为513×3矩阵(保留原行补零/一)
Python实现矩阵扩展(保留原行+0/1填充)
当然可行,下面给两种实用的实现方式:
方法1:使用NumPy(推荐,适合数值矩阵操作)
NumPy是Python处理数值矩阵的标准库,操作简洁高效:
import numpy as np # 假设原矩阵是19×3的numpy数组 original_matrix = np.random.rand(19, 3) # 示例原矩阵,替换成你的实际数据 # 目标行数 target_rows = 513 # 计算需要填充的行数 pad_rows = target_rows - original_matrix.shape[0] # 用0填充:创建全0的pad_rows×3矩阵,然后垂直拼接 zero_padded_matrix = np.vstack([original_matrix, np.zeros((pad_rows, 3))]) # 用1填充:创建全1的pad_rows×3矩阵,然后垂直拼接 one_padded_matrix = np.vstack([original_matrix, np.ones((pad_rows, 3))])
方法2:纯Python列表实现(无需额外库)
如果不想依赖NumPy,用原生列表也能轻松实现:
# 假设原矩阵是19×3的列表 original_matrix = [[i, i+1, i+2] for i in range(19)] # 示例原矩阵,替换成你的实际数据 target_rows = 513 pad_rows = target_rows - len(original_matrix) # 用0填充:原列表 + 生成pad_rows行全0的子列表 zero_padded_matrix = original_matrix + [[0]*3 for _ in range(pad_rows)] # 用1填充:原列表 + 生成pad_rows行全1的子列表 one_padded_matrix = original_matrix + [[1]*3 for _ in range(pad_rows)]
注意:纯Python实现时,不要用[[0]*3]*pad_rows这种写法——所有子列表会共享同一个引用,修改其中一行会影响所有行,用列表推导式[[0]*3 for _ in range(pad_rows)]才是正确的方式。
内容的提问来源于stack exchange,提问作者Rebecca20
相关产品推荐
相关产品推荐

