如何对复数矩阵索引做乘法得到新复数矩阵并解决Python代码TypeError问题
报错原因
- 你定义的
Matrix1是嵌套列表结构,每次循环拿到的i是单个列表对象(如[1.45 + 7.12j]),Python原生列表仅支持和正整数相乘实现列表重复操作,无法执行你需要的复数数值乘法,因此触发类型错误。此外你已导入numpy但并未使用numpy数组结构处理矩阵运算,也是问题来源之一。
修改方案
方案1:不使用numpy,仅修改原生列表逻辑
只需取出嵌套列表中的复数元素做计算,再按原结构存入即可:
Matrix1 = [[1.45 + 7.12j], [-7.42 + 7.42j]] Matrix2 = [1, 0] Product = [] for i, x in zip(Matrix1, Matrix2): Product.append([i[0] * x]) print(Product)
输出结果:
[[(1.45+7.12j)], [0j]]
方案2:使用numpy矩阵运算(推荐)
直接将列表转为numpy数组,利用广播机制完成批量运算,代码更简洁:
import numpy as np Matrix1 = np.array([[1.45 + 7.12j], [-7.42 + 7.42j]]) Matrix2 = np.array([1, 0]).reshape(-1, 1) Product = Matrix1 * Matrix2 print(Product)
输出结果:
[[1.45+7.12j] [0. +0.j ]]
内容的提问来源于stack exchange,提问作者Sinesipho
相关产品推荐
相关产品推荐

