У меня есть список длиной 50, заполненный массивами длины 5. Я пытаюсь вычислить расстояние между каждым массивом в списке и обновить массив с пустыми значениями.
Расчет расстояния - это просто получение квадратного корня из суммы квадратов расстояния между каждым элементом в массивах.
Когда я пытаюсь:
primaryCustomer = np.zeros(shape = (50,50))
for customer in range(0,50):
for pair in range(0,50):
thisCustomer = [0 for i in range(51)]
if customer == pair:
thisCustomer[pair] = 999
else:
calculateScores = (((Customer[customer][0]-Customer[pair][0])**2
+ (Customer[customer][1]-Customer[pair][1])**2
+ (Customer[customer][2]-Customer[pair][2])**2
+ (Customer[customer][3]-Customer[pair][3])**2
+ (Customer[customer][4]-Customer[pair][4])**2 )**(0.5))
thisCustomer[pair] = calculateScores
np.append(primaryCustomer, thisCustomer)
происходит пара вещей:
- Последняя итерация thisCustomer возвращает список всех нулей, кроме последнего элемента 999 (соответствует части if в приведенном выше утверждении). Итак, я знаю, что может обновить список, но он не делает это в части else.
- Я хочу, чтобы массив 'primaryCustomer' обновлялся с помощью Customer в качестве индекса и всех вычисленных оценок с каждой парой в качестве значений строки, но, похоже, он не обновляется вообще
Любые изменения, которые я делаю, например, пытаясь трактовать thisCustomer в цикле как массив вместо списка и добавлять к нему, в конечном итоге фиксируют одну область, а другие - еще хуже.
Вот как я получаю данные клиента:
Customer = [[0,0,0,0,0] for i in range(51)]
for n in range(51):
Customer[n] = np.ones(5)
Customer[n][randint(2,4):5] = 0
np.random.shuffle(Customer[n])
Я знаю, что могут быть упакованные способы сделать это, но я пытаюсь понять, как такие вещи, как KNN, работают в фоновом режиме, поэтому я бы хотел продолжить выяснение логики в циклах, как описано выше. Кроме того, любая помощь будет принята с благодарностью.