Для минимального рабочего примера оцифруйте 2D-массив. numpy.digitize
требуется массив 1D:
import numpy as np
N = 200
A = np.random.random((N, N))
X = np.linspace(0, 1, 20)
print np.digitize(A.ravel(), X).reshape((N, N))
Теперь документация:
... Копия делается только при необходимости.
Как узнать, нужна ли в этом случае копия ravel
"нужна"? В общем - есть ли способ, который я могу определить, создает ли конкретная операция копию или представление?