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

如何用Pythonic方法统计Numpy矩阵中复数、实数及纯虚数的数量

Pythonic方法统计Numpy矩阵中纯实数、纯虚数与普通复数的数量

先还原问题中的矩阵:

import numpy as np

arr = np.array([
    [1.+0.j, 1.+0.j, 1.+0.j, 1.+0.j, 1.+0.j],
    [1.+0.j, 0.309+0.951j, -0.809+0.588j, -0.809-0.588j, 0.309-0.951j],
    [1.+0.j, -0.809+0.588j, 0.309-0.951j, 0.309+0.951j, -0.809-0.588j],
    [1.+0.j, -0.809-0.588j, 0.309+0.951j, 0.309-0.951j, -0.809+0.588j],
    [1.+0.j, 0.309-0.951j, -0.809-0.588j, -0.809+0.588j, 0.309+0.951j]
])

按要求忽略“复数是实数/虚数超集”的定义,我们单独统计三类元素:

  • 纯实数:虚部近似为0
  • 纯虚数:实部近似为0且虚部不为0
  • 普通复数:实部和虚部都不为0

用Numpy的向量化操作就能高效完成统计,不用写低效循环:

# 统计纯实数:虚部在浮点精度范围内等于0
real_count = np.sum(np.isclose(arr.imag, 0))
# 统计纯虚数:实部近似为0,同时虚部不近似为0
imag_count = np.sum(np.isclose(arr.real, 0) & ~np.isclose(arr.imag, 0))
# 统计普通复数:虚部和实部都不近似为0
complex_count = np.sum(~np.isclose(arr.imag, 0) & ~np.isclose(arr.real, 0))

print(f"纯实数数量:{real_count}")
print(f"纯虚数数量:{imag_count}")
print(f"普通复数数量:{complex_count}")

运行结果:

纯实数数量:9
纯虚数数量:0
普通复数数量:16

补充说明

用np.isclose而非直接==0,是因为矩阵里的数值都是近似值(比如0.951是三角函数的近似结果),直接判断等于0会触发浮点数精度误差,np.isclose会在极小误差范围内判断相等,结果更可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:20:39