例如使用如下所示的numpy数组
a =([1,2,3,4,5],[100,200,300,400,500])和x = a [0]和y = a [1]
我如何绘制xy,其中2< x< 4?
答案 0 :(得分:0)
>>> from numpy import array
>>> a=array(([1,2,3,4,5], [100,200,300,400,500]))
>>> a[:, (2 < a[0])*(a[0] < 4)]
array([[ 3],
[300]])
由于这只是给出一个点,让我们选择另一个范围:
>>> a[:, (1.5 < a[0])*(a[0] < 4.5)]
array([[ 2, 3, 4],
[200, 300, 400]])
为了解释,(1.5 < a[0])*(a[0] < 4.5)
是真值和假值的向量。只要x介于1.5和4.5之间,就是如此。 Numpy可以使用这样的布尔向量来仅选择那些值。我们将它用于第二轴。
对于第一个轴,如果我们使用0(如在a[0, (1.5 < a[0])*(a[0] < 4.5)]
中),我们就会得到1.5到4.5之间的x
- 值。如果我们使用了1,我们就会得到与该x范围相对应的y值。如果我们想要一个同时包含x
和y
值的数组,我们可以使用:
作为第一个轴,这意味着“全部”。
如果我们想要绘制这些值:
b = a[:, (1.5 < a[0])*(a[0] < 4.5)]
import matplotlib.pyplot as plt
p = plt.plot(b[0], b[1])
plt.show()
答案 1 :(得分:0)
您可以尝试在阵列上使用蒙版:http://docs.scipy.org/doc/numpy/reference/routines.ma.html
这是我的意思的一个例子:
import numpy as np
x = np.array([1,2,3,4,5])
y = np.array([100,200,300,400,500])
# b contains true when corresponding value of x is outside 2 < x < 4
b = np.ma.masked_outside(x, 2, 4).mask
# x2 originates from x, but values 2 < x < 4 are stripped (according to the boolean variables contained in b), the same is done with y2
x2 = x[~b]
y2 = y[~b]
print 'x2', x2
print 'y2', y2
当它只是关于绘图时,你可以使用
import matplotlib.pyplot as plt
plt.plot(x,y)
plt.axis((2,4,None,None))
plt.show()