#python #integer
#python #целое число
Вопрос:
В настоящее время я сталкиваюсь с ошибкой, которая описывается следующим образом: допустимыми индексами являются только целые числа, slices ( :
), ellipsis ( ...
), numpy.newaxis ( None
) и целочисленные или логические массивы. Я действительно понимаю проблему. Однако я не могу исправить это в коде Python, поскольку я всего лишь новичок в использовании Python. полный код находится по ссылке: ‘https://homepages.ecs.vuw.ac.nz /~marslast/Code/Ch9/TSP.py » отчет терминала таков:
((1, 2, 3, 4, 0), 2.4225597326923185)
0.0004763603210449219
Greedy search
Traceback (most recent call last):
File "TSP.py", line 183, in <module>
runAll()
File "TSP.py", line 167, in runAll
print (greedy(distances))
File "TSP.py", line 57, in greedy
dist[:,cityOrder[0]] = np.Inf
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
Недопустимый код:
nCities = np.shape(distances)[0]
distanceTravelled = 0
# Need a version of the matrix we can trash
dist = distances.copy()
cityOrder = np.zeros(nCities)
cityOrder[0] = np.random.randint(nCities)
dist[:,cityOrder[0]] = np.Inf
for i in range(nCities-1):
cityOrder[i 1] = np.argmin(dist[cityOrder[i],:])
distanceTravelled = dist[cityOrder[i],cityOrder[i 1]]
# Now exclude the chance of travelling to that city again
dist[:,cityOrder[i 1]] = np.Inf
# Now return to the original city
distanceTravelled = distances[cityOrder[nCities-1],0]
return cityOrder, distanceTravelled ```
Ответ №1:
Проблема возникает из-за использования numpy.zeros
(doc здесь). Как вы можете видеть, по умолчанию dtype
выходной массив равен float
. И вы не можете использовать значение с плавающей точкой для индексации массива.
Быстрым решением было бы указать dtype
cityOrder
значение int
:
cityOrder = np.zeros(nCities, dtype=int)