В настоящее время я занимаюсь реализацией алгоритмов Geneti c. Я написал свои методы кроссовера и мутации, и сейчас я пишу свой метод Fitness.
Мне нужно преобразовать мой список 0 и 1 в десятичные значения для вычисления расстояния.
Мой текущий вывод, с которым я работаю, это список целочисленных значений 1 и 0. (Пример ниже):
[[0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1], [0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1]]
<class 'list'>
Я хочу преобразовать эти числа в их уважаемый двоичный эквивалент. Я попытался преобразовать список в группы по 4, а затем вызвать функцию binaryToDecimal для преобразования битов в десятичные значения. Тем не менее, я получаю сообщение об ошибке 'TypeError:' numpy .ndarray 'объект не вызывается'. Я суммировал мой код, и вот так он выглядит.
def converting_binary_to_decimal(L):
output = []
for l in L:
l = list(map(str, l))
sub_output = []
for j in range(0, len(l)-1, 4):
sub_output.append(int(''.join(l[j:j+4]), 2))
output.append(sub_output)
return output
def chunks(L, n):
for i in range(0, len(L), n):
yield L[i:i+n]
def fitness(child):
newList1=list(chunks(child[0], 4))
newList2=list(chunks(child[1], 4))
if __name__ == "__main__":
myFitness = fitness(afterMU)
Пример вывода того, что я хочу: [[0, 13, 6, 8, 12, 8, 10, 9 , 15], [0, 8, 7, 0, 4, 4, 1, 8, 15]]