有numpy.ma.masked_where
用于屏蔽单个值。还有numpy.ma.masked_inside
用于掩蔽间隔。
但是我不太明白它应该如何工作。
import numpy.ma as M
from pylab import *
figure()
xx = np.arange(-0.5,5.5,0.01)
vals = 1/(xx-2)
vals = M.array(vals)
mvals = M.masked_where(xx==2, vals)
subplot(121)
plot(xx, mvals, linewidth=3, color='red')
xlim(-1,6)
ylim(-5,5)
但是,我想做这样的事情(我知道这不起作用):
mvals = M.masked_where(abs(xx) < 2.001 and abs(xx) > 1.999, vals)
因此我尝试这样masked_inside
使用:
mvals = ma.masked_inside(xx, 1.999, 2.001)
但结果不是我想要的,它只是一条直线......我想要这样的东西。
整个脚本是这样的:
def f(x):
return (x**3 - 3*x) / (x**2 - 4)
figure()
xx = np.arange(begin, end, precision)
vals = [f(x) for x in xx]
vals = M.array(vals)
mvals = ma.masked_inside(xx, 1.999, 2.001)
subplot(121)
plot(xx, mvals, linewidth=1, c='red')
xlim(-4,4)
ylim(-4,4)
gca().set_aspect('equal', adjustable='box')
show()
如何masked_inside
正确使用?