You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中计算2×1复数向量的整体模长?

复数向量整体模长计算问题

问题背景

我有一个3×1的numpy复数矩阵:

import numpy as np
matrix = np.matrix([[(0.0009118819655545739+0.0009118819655545738j)], [(0.0009118819655544588-0.0009118819655544589j)], [(-0.0009118819655545161-5.421010862427522e-20j)]])

通过以下代码删除最后一行,得到2×1的复数向量:

vector = np.delete(matrix, 2, 0)

得到的向量为:

vector = [[(0.0009118819655545739+0.0009118819655545738j)]]
         [[(0.0009118819655544588-0.0009118819655544589j)]]

现在我用循环执行np.absolute只能得到第一个元素的模长(0.0012895958429705512),想知道如何计算这个向量的整体模长,同时确认数学公式是否正确:若向量为[[(x1+x2j)],[(y1-y2j)]],则整体模长公式为sqrt((x1)**2 + (x2)**2 + (y1)**2 + (y2)**2),对应结果应为0.00182376392。

解答

公式正确性确认

你的数学公式是正确的。复数向量的整体模长(即欧几里得范数)计算方式就是将所有元素的实部和虚部的平方求和后开平方,等价于先计算每个元素的模长平方,求和后再开平方。

Numpy实现方法

不需要用循环,直接利用numpy的向量运算即可高效计算:

  1. 分步计算方式
# 计算每个元素的模长平方
mod_squared = np.square(np.absolute(vector))
# 求和后开平方得到整体模长
total_norm = np.sqrt(np.sum(mod_squared))
  1. 简洁范数函数调用
    numpy的np.linalg.norm可以直接计算向量的欧几里得范数,对于复数向量默认就是计算你需要的整体模长:
total_norm = np.linalg.norm(vector)

执行上述代码后,得到的结果与你预期的0.00182376392基本一致(浮点精度会导致微小误差)。


内容的提问来源于stack exchange,提问作者UbuntuPython

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:46:02