使用Numpy实现5x5矩阵转置且对3的倍数元素执行特殊计算的方法
5×5矩阵处理实现方案
核心逻辑说明
需要的核心修改点是:获取转置后矩阵中3的倍数元素的行、列索引,按公式计算后直接替换对应位置的值,同时修正原代码中随机数可能重复的问题。
完整可运行代码
import numpy as np # 生成1-100范围内25个不重复的随机数组成5x5矩阵 M = np.random.choice(np.arange(1, 101), size=25, replace=False).reshape(5, 5) print("原始5×5矩阵:") print(M) # 执行矩阵转置 M_trans = np.transpose(M) print("\n转置后矩阵:") print(M_trans) # 查找转置后矩阵中所有是3的倍数的元素的行索引、列索引 row_idx, col_idx = np.where(M_trans % 3 == 0) # 按公式 (3*j + i)**2 批量替换,i为行索引row_idx,j为列索引col_idx M_trans[row_idx, col_idx] = (3 * col_idx + row_idx) ** 2 print("\n最终处理后矩阵:") print(M_trans)
关键步骤解释
- 随机矩阵生成:使用
np.random.choice并设置replace=False,保证生成的25个数值完全不重复,符合题目要求 - 索引获取:通过
np.where直接批量获取所有符合条件元素的行(i)、列(j)索引,不需要遍历整个矩阵,效率更高 - 批量赋值:利用numpy的广播特性,直接对所有符合条件的位置执行公式计算并赋值,写法简洁
内容的提问来源于stack exchange,提问作者Jose Antonio Piedehierro Arias
相关产品推荐
相关产品推荐

