在Python中创建一个具有另一个数组中元素的对数值的新数组

时间:2011-03-03 01:01:53

标签: python numpy

嘿..我的python代码遇到了一些问题..我有一组频率和功率谱的值。我需要在对数刻度上绘制频率v / s功率谱。我试图将频率和功率谱的对数值存储在2个其他变量中然后绘制它们。任何想法如何做到这一点?

2 个答案:

答案 0 :(得分:5)

假设您有一个值列表,您可以使用简单的列表解析:

frequencies = [1, 2, 3, 4, 5]
import math
logOfFrequencies = [ math.log(x) for x in frequencies ]

或者

logOfFrequencies = map(math.log, frequencies)

如果你有一个频繁的频率数组,因为你使用Matplotlib / Pylab创建你的情节,你可以改为:

import numpy
frequencies = numpy.arange(1, 5)
logOfFrequencies = numpy.log(frequencies)

答案 1 :(得分:3)

如果您只想以对数比例绘制数据,请考虑matplotlib方法,loglogsemilogx以及semilogy

http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.loglog

http://matplotlib.sourceforge.net/plot_directive/mpl_examples/pylab_examples/log_demo.py

这样可以避免计算各种数组的日志,并允许您精确定制各种数量的显示方式。