как можно использовать лямбда для умножения каждого элемента в массиве, но каждый из них имеет разные операции - PullRequest
0 голосов
/ 16 октября 2019

у меня есть этот массив this :ordin = [[1,3,4], [4,4,4]], каждая позиция означает 0 = оценка, 1 = минута, 2 = секунды, мне нужно сделать операциюиспользуя лямбду, чтобы преобразовать координаты массива в радианы, это означает, что используйте эту формулу

coord= [[1,3,4],
        [4,4,4]]

f=lambda a,b,c : (a+((b+(c/60))/60))/180

print( f(coord))

Я пытался взять 3 разных буквы, но это не работает, если у вас есть идея, пожалуйста, сообщите мне

Ответы [ 3 ]

0 голосов
/ 16 октября 2019

Если я правильно понимаю, вам нужно звонить f по каждой координате. Вы можете использовать * для расширения аргументов:

In [17]: for pos in coord: 
    ...:     print(f(*pos)) 
    ...:      
    ...:                                                                                                                                             
0.005839506172839506
0.022598765432098766

С пониманием списка:

In [18]: [f(*x) for x in coord]                                                                                                                      
Out[18]: [0.005839506172839506, 0.022598765432098766]
0 голосов
/ 16 октября 2019

Переопределите функцию или измените a на x [0], b на x [1] ... в лямбде

def f(x):
    a,b,c = x
    return (a+((b+(c/60))/60))/180

и используйте функцию apply_along_axis

np.apply_along_axis(f, 1, coords)
array([0.00583951, 0.02259877])

с labmda itбудет

np.apply_along_axis(lambda x : (x[0]+((x[1]+(x[2]/60))/60))/180, 1, coords)
array([0.00583951, 0.02259877])
0 голосов
/ 16 октября 2019

Ты рядом. У вас есть две проблемы: (1) у вас есть два набора коэффициентов, и (2) вы дали своей функции список, а не отдельные элементы.

Чтобы получить одно вычисление,выберите один список и затем разверните его до списка аргументов для вашей функции:

print( f(*coord[0]))

Результат:

0.005839506172839506

После этого я ожидаю, что вы можетераспечатайте эти два вычисления любым способом, который вы имеете в виду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...