Преобразование простого кода аргумента IDL в код Python

Просто я хочу перевести код IDL в код Python. Это простая задача для любого эксперта по IDL и Python. Но для меня это невозможно, если кто-нибудь поможет мне перевести этот код, я буду благодарен ему/ей.

RelA = ABS((image1 ) - (image2))
index = where(RelA gt 180.D)
RelA[index] = 360.D- RelA[index]
index = where(RelA le 180.)
RelA[index] = 180.D- RelA[index]
CosRe = cos(RelA * !pi / 180.D)

person Bijoy Gayen    schedule 11.06.2019    source источник


Ответы (1)


Это простое преобразование в NumPy:

#RelA = ABS((image1 ) - (image2))
RelA = np.abs(image1 - image2)

#index = where(RelA gt 180.D)
index = np.where(RelA > 180.0)

#RelA[index] = 360.D- RelA[index]
RelA[index] = 360.0 - RelA[index]

#index = where(RelA le 180.)
index = np.where(RelA <= 180.0)

#RelA[index] = 180.D- RelA[index]
RelA[index] = 180.0 - RelA[index]

#CosRe = cos(RelA * !pi / 180.D)
CosRe = np.cos(np.radians(RelA))

Чтобы перевести второй фрагмент кода, просто удалите спецификаторы «D» (скаляры Python автоматически имеют более высокую точность), используйте «**» вместо «^» и используйте функцию Numpy cos:

D1 = (0.00864 + (0.0000065)) * (0.86D)**(-(3.916 + (0.074 * 0.86)+ (0.05/0.86D)))
D2 = 0.008569 * ((0.8585)**(-4))*(1. + (0.0113 *(0.8585)**(-2)) + (0.00013 * (0.8585D)^(-4)))
D1 = (Pz/Po) * (0.00864 + (0.0000065 * z)) * (0.55)**(-(3.916 + (0.074 * 0.55)+ (0.05/0.55)))
Pr1 = (3./16.*np.pi)* (2/(2+delta))* ((1+delta)+((1+delta)*(np.cos(Agl) * np.cos(Agl))))
Pr2 =  (3./16.*np.pi) * (1 + (np.cos(Agl) * np.cos(Agl)))
person mgalloy    schedule 11.06.2019
comment
Спасибо за ваш добрый ответ. Меня немного беспокоят еще пять строк кода IDL, не могли бы вы перевести этот код для меня. Я буду обязан, если вы любезно поможете мне. - person Bijoy Gayen; 11.06.2019