Я пытаюсь перевести скрипт Python на Java.Поскольку я не очень хорошо знаком с Python, я не могу понять условие в этом скрипте.Вот оригинальный сценарий:
import numpy as np
def inverse_generalized_anscombe(x, mu, sigma, gain=1.0):
test = np.maximum(x, 1.0)
exact_inverse = ( np.power(test/2.0, 2.0) +
1.0/4.0 * np.sqrt(3.0/2.0)*np.power(test, -1.0) -
11.0/8.0 * np.power(test, -2.0) +
5.0/8.0 * np.sqrt(3.0/2.0) * np.power(test, -3.0) -
1.0/8.0 - np.power(sigma, 2) )
exact_inverse = np.maximum(0.0, exact_inverse)
exact_inverse *= gain
exact_inverse += mu
exact_inverse[np.where(exact_inverse != exact_inverse)] = 0.0
return exact_inverse
Строка, которую я не понимаю, это строка:
exact_inverse[np.where(exact_inverse != exact_inverse)] = 0.0
Как я понимаю, в поле absolute_inverse должно быть одно значение, а немассив, так почему перед ним пара квадратных скобок?какое состояние в квадратных скобках пытается проверить?exact_inverse != exact_inverse
условие, кажется, всегда false
, или я что-то здесь упускаю.
Оригинальный сценарий можно найти здесь