Python Numpy-复数-是否有极向矩形转换的函数?

2024-09-25 12:36:22 发布

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

是否有一个内置的Numpy函数将极坐标形式的复数、大小和角度(度)转换为实部和虚部的复数?

很明显我可以自己写,但它似乎是一种类型的东西,其中有一个优化版本包括在某个模块?

更具体地说,我有一系列的震级和一系列的角度:

>>> a
array([1, 1, 1, 1, 1])
>>> b
array([120, 121, 120, 120, 121])

我想要的是:

>>> c
[(-0.5+0.8660254038j),(-0.515038074+0.8571673007j),(-0.5+0.8660254038j),(-0.5+0.8660254038j),(-0.515038074+0.8571673007j)]

Tags: 模块函数版本numpy类型array内置形式
3条回答

前面的答案中有一个错误,使用numpy.vectorize-cmath.rect不是可以导入的模块。Numpy还提供了deg2rad函数,它为角度转换提供了一段更干净的代码。该代码的另一个版本可能是:

import numpy as np
from cmath import rect

nprect = np.vectorize(rect)

c = nprect(a, np.deg2rad(b))

代码使用numpy的矢量化函数返回标准库的cmath.rect函数的numpy样式版本,该函数可以跨numpy数组按元素应用。

我用cmathitertools

from cmath import rect,pi
from itertools import imap
b = b*pi/180                   # convert from deg to rad
c = [x for x in imap(rect,a,b)]

没有一个函数可以完全满足您的要求,但是有一个函数可以完成最困难的部分。例如,可以定义两个函数:

def P2R(radii, angles):
    return radii * exp(1j*angles)

def R2P(x):
    return abs(x), angle(x)

这些函数使用弧度作为输入和输出,对于度,需要在这两个函数中将其转换为弧度。

在numpy reference中有一个关于处理复数的部分,这是您要查找的函数的列表(因为它们不存在,所以我认为它们不存在于numpy中)。

相关问题 更多 >