У меня есть ndarray A, который хранит объекты одного типа, в частности различные объекты LinearNDInterpolator. Например, предположим, что это всего лишь 2:Оценить несколько элементов массива numpy объектов
>>> A
array([ <scipy.interpolate.interpnd.LinearNDInterpolator object at 0x7fe122adc750>,
<scipy.interpolate.interpnd.LinearNDInterpolator object at 0x7fe11daee590>], dtype=object)
Я хочу иметь возможность делать две вещи. Во-первых, я хотел бы оценить все объекты в A в определенный момент и вернуть ndarray из A.shape со всеми значениями в нем. Что-то вроде
>> A[[0,1]](1,1) =
array([ 1, 2])
Однако я получаю
TypeError: 'numpy.ndarray' object is not callable
Можно ли это сделать?
Во-вторых, я хотел бы изменить значения интерполяции без создания новых объектов LinearNDInterpolator (так как узлы остаются неизменными). Т.е., что-то вроде
A[[0,1]].values = B
где B является ndarray, содержащий новые значения для каждого элемента А.
Спасибо за ваши предложения.
Эй, спасибо за ваш ответ. Проблема в том, что массив n-мерный, поэтому было бы утомительно работать со списками или циклами. Мне удалось сделать первое, используя numpy.frompyfunc: я могу определить eval_element = lambda array: array (1,1), а затем определить eval_ufunc = np.frompyfunc (eval_element, 1, 1). eval_ufunc (A) затем возвращает ndarray каждого LinearNDinterpolator, evalutated at (1,1). – Tobias
И да, вы можете изменить значения Interpolators, они сохраняются в атрибуте A [0] .values. – Tobias
'frompyfunc' оценен.Я использовал его в нескольких ответах SO, например. http://stackoverflow.com/a/36297194/901925 – hpaulj