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

对NumPy数组取分数次幂产生NaN的原因是什么?

问题根因
  • 你的数组k后半段包含大量负实数,而在实数运算规则下,负实数的非整数次幂没有对应实数值,numpy对实数类型数组执行这类运算时会直接返回NaN。
  • 你构造数组时用到的np.r_[0:N / 2, 0, -N / 2 + 1:0]片段中,-N / 2 + 1:0生成的是连续负整数,乘以系数后依然为负,这部分就是NaN的来源。
已尝试方法无效的原因
  • np.power和**运算符的底层逻辑完全一致,对实数数组的负底数非整数次幂运算,默认不会自动切换到复数域计算。
  • scipy.linalg.fractional_matrix_power是用于矩阵整体的分数次幂运算工具,不支持逐元素的标量幂运算,属于场景误用。
解决方案

根据你的实际需求二选一即可:

  1. 需要保留复数运算结果:先将数组转换为复数类型再运算
kpower = k.astype(np.complex128) ** (3/2)
  1. 需要得到对应实数值(保留原符号、仅对绝对值做幂运算:
kpower = np.sign(k) * (np.abs(k) ** (3/2))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:45:04