Один из способов - подделать его с помощью интерполяции по области индексов матрицы до значения вашего массива (как в функции, принимающей два аргумента и возвращающей интерполяцию вашего массива):
>>> from scipy.interpolate import interp2d
>>> Y, X = np.meshgrid(range(arr.shape[0]), range(arr.shape[1]))
>>> f = interp2d(X, Y, arr, kind='linear')
>>> print(f(0, 0), f(0, 1), f(1, 0), f(1, 1),f(0.5, 0.5))
[0.] [1.] [2.] [3.] [1.5]
shape[0]
- это строки, которые являются нашей y осью, и такие же для shape[1]
(столбцы) и x . Вы можете предпочесть установить bounds_error=True
в интерполяции, в противном случае f(-1, 2)
вернет что-то из массива (или fill_value
, если вы его установите). Другой вариант - fill_value=np.nan
, который часто имеет смысл.
Примечание f
- это , а не массив , и поэтому такие вещи, как f*2
, являются ошибками. Если вы хотите что-то подобное, вам, вероятно, придется реализовать это самостоятельно. Я не думаю, что в numpy
есть что-то подобное.