我有一个值列表,其中一些值需要在使用matplotlib绘图之前进行转换。
表达式如下所示:
m=0
while m < len(power):
for item in power:
if float(list1[m]) != 0:
list2.append(float((1/float(list1[m])-1)*float(power[m])))
elif float(list1[m]) == 0:
list2.append("inf")
m+=1其中"power“是介于0和100+ (一个小数)之间的值列表,而list1可以是介于负值、0或正值(四个小数)之间的任何值。
正如你所看到的,为了避免零除,我有一个条件,当list1 =0时,我有一个渐近行为。
对于y轴,这样做可以很好地工作,并且可以很好地绘制。但是,如果我试图在x轴上绘制相同的东西,我会得到以下警告:
[...]\lib\site-packages\matplotlib\lines.py:504: RuntimeWarning: invalid value encountered in subtract
return np.alltrue(x[1:] - x[0:-1] >= 0)
[...]\lib\site-packages\matplotlib\lines.py:504: RuntimeWarning: invalid value encountered in greater_equal
return np.alltrue(x[1:] - x[0:-1] >= 0)从我所看到的情况来看,绘图看起来很好(可能有一些我没有看到的问题),但我希望避免收到警告。
发布于 2014-09-03 16:37:02
如果你不给我们你的绘图代码,就很难说出你的绘图代码出了什么问题!但让我们试一试:
%pylab
power = randint(1, 100, 10)
list1 = randn(10)
list2 = []
m=0
while m < len(power):
for item in power:
if float(list1[m]) != 0:
list2.append(float((1/float(list1[m])-1)*float(power[m])))
elif float(list1[m]) == 0:
list2.append("inf")
m+=1
plot(t, list2)
plot(list2, t)这似乎很管用。
发布于 2014-09-03 21:56:08
这可能不是处理这个问题的正确方法,但它似乎是有效的:
import numpy as np
np.seterr('ignore')瞧。未打印任何警告。我认为这可能是一个风险,如果有什么地方出了问题,但据我所见,它的情节很好。
https://stackoverflow.com/questions/25639390
复制相似问题