python:如何将复数替换为1?

2024-10-05 17:39:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我找到了一种能识别数字是否复杂的方法。 我的数据是这样的。在

[[ 2.48983949+0.j          0.51935128+0.j          0.50851186+0.j
   0.49747311+0.j          0.48621321+0.j          0.47549854+0.j
   0.32583775+0.j          0.32263812+0.j          0.31966799+0.j
   0.31415193+0.j          0.31590046+0.j          0.31224772+0.j
   0.30953578+0.j        ]
 [ 2.78263801+0.j          0.47996998+0.j          0.46950057+0.j
   0.45938939+0.j          0.44934962+0.j          0.43981685+0.j
   0.30778303+0.j          0.30533936+0.j          0.30283312+0.j
   0.30045755+0.j          0.29776178+0.j          0.29601522+0.j
   0.29394237+0.j        ]
 [ 0.00000000+0.86404032j  0.44030961+0.j          0.43096323+0.j
   0.42117570+0.j          0.41239587+0.j          0.40406585+0.j
   0.29059586+0.j          0.28840336+0.j          0.28632998+0.j
   0.28435365+0.j          0.28251060+0.j          0.28053645+0.j
   0.27894779+0.j        ]]

所以数据是二维numpy数组。在

我想把虚数换成-1。我怎么能这么做?在


Tags: 数据方法numpy数字数组虚数
2条回答

IIUC,你可以这样做:

>>> arr = np.array([[1,2+3j,4+5j],[6+7j,8,9],[10+11j,12,13+14j]])
>>> arr
array([[  1. +0.j,   2. +3.j,   4. +5.j],
       [  6. +7.j,   8. +0.j,   9. +0.j],
       [ 10.+11.j,  12. +0.j,  13.+14.j]])
>>> arr[abs(arr.imag) > 0] = -1
>>> arr
array([[  1.+0.j,  -1.+0.j,  -1.+0.j],
       [ -1.+0.j,   8.+0.j,   9.+0.j],
       [ -1.+0.j,  12.+0.j,  -1.+0.j]])

然后(因为通过构造,我们所有的虚部都为零),如果我们想要,我们可以只使用实部:

^{pr2}$

(更新:正如Floris所说,arr.imag != 0甚至比abs(arr.imag) > 0更好。这样既简单又快捷,但两者都能起作用。)

最好的方法是使用numpy数组。假设你有一个数组:

In [106]: y
Out[106]:
array([[ 1.+0.j,  2.+0.j,  1.+0.j],
       [ 1.+0.j,  2.+0.j,  1.+0.j],
       [ 2.+3.j,  2.+0.j,  3.+0.j]])

然后

^{pr2}$

然后,您可以使用此选项将其替换为:

^{3}$

相关问题 更多 >