, например с Numpy массива, как в следующем,выбрать определенный диапазон от А NumPy 2d массив значений участка
а = ([1,2,3,4,5], [100.200.300.400.500]) и х = a [0] и y = a [1]
как можно построить график xy где 2 < x < 4?
, например с Numpy массива, как в следующем,выбрать определенный диапазон от А NumPy 2d массив значений участка
а = ([1,2,3,4,5], [100.200.300.400.500]) и х = a [0] и y = a [1]
как можно построить график xy где 2 < x < 4?
Вы можете попробовать маски на массивы: 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()
>>> 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)
вектор истинных и ложных ценностей. Это верно, когда х составляет от 1,5 до 4,5. Numpy может использовать такие логические векторы для выбора только этих значений. Мы используем это для второй оси.
Для первой оси, если бы мы использовали 0 (как в a[0, (1.5 < a[0])*(a[0] < 4.5)]
), мы получили бы только x
-значения от 1,5 до 4,5. Если бы мы использовали 1, мы получили бы только значения y, соответствующие этому x-диапазону. Если нам нужен массив с значениями 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()
Это большое спасибо @ John1024, это идеальное решение для выборочной печати, чтобы сэкономить память – firefly
при построении лучшего использования вашего предложения использовать маскированные массивы для экономии памяти в некоторых случаях. это было действительно полезно, спасибо @Simon – firefly