Я сделал этот код:
import numpy as np
import scipy.stats as stats
def kendalltau(ind):
x = np.array([1,2,3,4,5])
return stats.kendalltau(x, ind)[0]
selected = []
for i in range(5):
selected.append(np.random.choice(np.arange(0, 5), replace=False, size=(5)))
distances = list(map(lambda ind: kendalltau, selected))
print(distances)
И печатает это:
[<функция кендаллтау по адресу 0x000001A5D476BD08>, <функция кендаллтау по адресу 0x000001A5D476BD08>, <функция kendalltau по адресу 0x000001A5D476BD08>, <функция kendalltau по адресу 0x000001A5D476BD08>, <функция kendalltau по адресу 0x000001A5D476BD08>]
Тем не менее, я хотел бы получить массив значений тау кендаллтау, например [0,482, -0,041, 0,788, 0,968, 0,325]
Есть идеи ?
Спасибо
Аймерик
просто измените выше:
distances = list(map(lambda ind: kendalltau, selected))
к этому:
distances = list(map(kendalltau, selected))
проблема с вашим кодом заключается в том, что вы используете лямбда-выражение, которое возвращает исполняемый файл, но внутри него вы ничего не выполняете, поэтому есть исполняемый файл, который возвращает другой исполняемый файл, который бесполезен. просто отправьте определенную вами функцию, и map
выполнится это для каждого предмета
Вам все еще нужно передать аргумент ind в kendalltau в вызове лямбда-функции. должен быть
distances = list(map(lambda ind: kendalltau(ind), selected))
Я не уверен, что стоит указывать на эту ошибку, не объясняя, что лямбда-выражение здесь бесполезно.
Вы правы, я просто гоняюсь за репутацией :)
То, что @chepner говорит (я думаю), это то, что list(map(kendalltau, selected))
достаточно.
Возможно, Вы имели в виду:
distances = list(map(lambda ind: kendalltau(ind), selected))
?