来自负数组平方根的复数

dan*_*rke 1 matlab numpy sqrt

我是一个从 Matlab 到 python 的新转换者,我正在努力生成复杂的数组。

在matlab中,我有以下代码:

  xyAxis = linspace(-127,127,255);
  [x,y] = meshgrid(xyAxis, xyAxis);
  fz = -(x.^2 + y.^2);
  ifz = sqrt(fz);
Run Code Online (Sandbox Code Playgroud)

我试图在 python 3 中复制:

  import numpy as np
  xyAxis = np.intp( np.linspace(-127, 127, 255) )
  x, y = np.meshgrid(xyAxis,xyAxis)
  fz =  - (x**2 + y**2)
  ifz = np.sqrt(fz)
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

  RuntimeWarning: invalid value encountered in sqrt
Run Code Online (Sandbox Code Playgroud)

我已经做了一些谷歌搜索,但我不确定在这种情况下如何模仿 matlab 的行为?有什么建议?

Pau*_*zer 5

一种方法是强制转换fz为 complex dtype

ifz = np.sqrt(fz.astype(np.complex))
Run Code Online (Sandbox Code Playgroud)