如何基于另一矩阵Q的行列乘积条件给Python矩阵M赋值?
Python矩阵M生成实现方案
根据你描述的规则,分两种常见场景给出实现代码:
场景1:直接判断Q矩阵i行j列的元素本身大于0.5
如果需求是单个元素Q[i][j]的值大于0.5就赋值1,直接用嵌套列表推导式即可:
# 接你已有的代码 M = [[1 if Q[i][j] > 0.5 else 0 for j in range(x)] for i in range(y)]
运行后生成的M结果为:
[[0, 0, 1], [0, 1, 0], [0, 0, 0]]
场景2:判断Q第i行与第j列的点积(乘积求和)大于0.5
如果需求是你注释里提到的行与列的乘积总和判断,实现如下:
# 普通Python实现 M = [] for i in range(y): row = [] for j in range(x): # 计算第i行和第j列对应元素相乘后的求和结果 dot_product = sum(Q[i][k] * Q[k][j] for k in range(x)) row.append(1 if dot_product > 0.5 else 0) M.append(row)
也可以写成嵌套列表推导式的形式:
M = [[1 if sum(Q[i][k] * Q[k][j] for k in range(x)) > 0.5 else 0 for j in range(x)] for i in range(y)]
更简便的Numpy实现
如果可以使用第三方库,用numpy代码会更简洁:
import numpy as np Q_np = np.array(Q) # 对应场景1的实现 M = (Q_np > 0.5).astype(int).tolist() # 对应场景2的实现 M = ((Q_np @ Q_np) > 0.5).astype(int).tolist()
内容的提问来源于stack exchange,提问作者user16612111
相关产品推荐
相关产品推荐

