У меня есть большой набор точек данных (100 000+), хранящихся в 2-мерном массиве numpy (1-й столбец: координаты x, координаты 2-го столбца: y). У меня также есть несколько одномерных массивов, сохраняющих дополнительную информацию для каждой точки данных. Теперь я хотел бы создавать графики из подмножеств этих 1D-массивов, которые включают только точки, находящиеся в заданном полигоне.
Я придумал следующее решение, которое не является ни элегантным, ни быстрым:
#XY is the 2D array.
#A is one of the 1D arrays.
#poly is a matplotlib.patches.Polygon
mask = np.array([bool(poly.get_path().contains_point(i)) for i in XY])
matplotlib.pylab.hist(A[mask], 100)
matplotlib.pylab.show()
Не могли бы вы помочь мне улучшить этот код? Я пытался играть с np.vectorize вместо понимания списка, но не смог заставить его работать.