我正在尝试为函数logi(X)(一个基于i的日志)绘制matplotlib图。以下是我的代码:
from pylab import *
import cmath
x = linspace(-8,8,500)
z = cmath.log(x,1j)
plot(x,real(z),label='real')
plot(x,imag(z),label='imag')
legend()
show()
问题是它抛出了TypeError: only length-1 arrays can be converted to Python scalars
。
我搜索了一下,找到了类似TypeError: only length-1 arrays can be converted to Python scalars while trying to exponentially fit data的答案:
像math.abs()或math.log10()这样的非NumPy函数不能很好地处理NumPy数组。
还有一些建议,建议改用Numpy的log()函数。不幸的是,Numpy不支持以i为基础的对数,所以我被迫使用cath。我怎么才能修好它?
1条答案
按热度按时间egdjgwm81#
如果数组具有复杂数据类型,则
np.log
将返回复杂结果:在-8点:
我们可以用以下标准移动基数:
将其与
cmath
结果进行比较:因此,要么为数组的每个元素迭代并调用
cmath.log
,要么使用这个复杂的数组和基移位。