ValueError: матрицы не выровнены для ошибки копирования и x[:]

Я получил ValueError, как указано ниже.

ValueError: матрицы не выровнены для ошибки копирования

Это было прослежено до следующей строки (я не писал этот код, я пытаюсь использовать его):

x1[:] =  _dotproduct(x1, u)

Точечный продукт похож на точечный продукт, он работает FINE, printing _dotproduct(x1, u) дать правильный ответ. это x1[:] это не работает.

Что значит [:] имею в виду? Я никогда не видел этого.

Также, как я могу решить ошибку выравнивания?

Редактировать:
Теперь я проследил ошибку x1[:]поэтому вместо этого я могу сделать следующее:

hh=len(x1)

x1[0:hh]=_dotproduct(x1, u)?

1 ответ

В этом случае, так как он находится на левой стороне = знак, это назначение среза. Предмет x1 остается тем же объектом, но все его содержимое заменяется последовательностью справа. Без [:], x1 будет назначен на совершенно другой объект.

Использование назначения фрагмента означает, что если в вашей программе есть другие ссылки на ту же переменную, все они увидят новое содержимое. Например, вызывающая функция переходит в контейнер, а функция заменяет его содержимое. Это было бы невозможно без назначения среза.

Другие вопросы по тегам