indexerror invalid index to scalar variable

1 kav [2018-09-17 15:56:00]

Я пытаюсь создать ограничительную рамку, используя измерения, упомянутые в аннотации обнаружения в этом наборе данных (я использую политеррасный). По какой-то причине следующий код работает для 25 кадров, а затем внезапно он дает мне ошибку:

Каковы возможные причины этого?

list python-3.x point-clouds

2 ответа

1 Решение Poolka [2018-09-17 17:00:00]

Я загрузил данные, распаковал их, проверил, и оказалось, что файл polyterrasse026.ezd.bbox имеет только 1 строку данных:

Вот почему bbox_path[26] — это 1D-массив. Именно по этой причине вы получили ошибку.

Чтобы проверить, является ли bbox двумерным массивом, вы можете использовать, например, bbox.ndim == 2 . bbox.size показывает количество элементов в массиве, а не количество измерений.

Характер вашей проблемы заключается в том, что np.loadtxt() возвращает 1D-массив, если файл содержит только одну строку данных. Вы можете решить эту проблему следующим образом:

0 Unang [2018-12-20 19:34:00]

Почему я всегда получаю ошибку с этим кодом? msgstr «неверный индекс к скалярной переменной.» muT: массив 1 строка и 400 кол. 1×400 varT: массив 1×400 rataS матрица 10×400

Этот код генерирует ошибку:

в строке: results.append(RMSPE(np.expm1(y_train[testcv]), [y[1] for y in y_test]))

Как это исправить?

1 ответ

Вы пытаетесь проиндексировать в скалярное (не повторяемое) значение:

Когда вы вызываете [y for y in test] вы уже перебираете значения, поэтому вы получаете одно значение в y .

Ваш код такой же, как и попытка сделать следующее:

Я не уверен, что вы пытаетесь получить в свой массив результатов, но вам нужно избавиться от [y[1] for y in y_test] .

Если вы хотите добавить каждый y в y_test к результатам, вам нужно расширить понимание списка до чего-то вроде этого:

This code generates error:

at the line: results.append(RMSPE(np.expm1(y_train[testcv]), [y[1] for y in y_test]))

2 Answers 2

You are trying to index into a scalar (non-iterable) value:

When you call [y for y in test] you are iterating over the values already, so you get a single value in y .

Your code is the same as trying to do the following:

I’m not sure what you’re trying to get into your results array, but you need to get rid of [y[1] for y in y_test] .

If you want to append each y in y_test to results, you’ll need to expand your list comprehension out further to something like this:

Оцените статью