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
будет назначен на совершенно другой объект.
Использование назначения фрагмента означает, что если в вашей программе есть другие ссылки на ту же переменную, все они увидят новое содержимое. Например, вызывающая функция переходит в контейнер, а функция заменяет его содержимое. Это было бы невозможно без назначения среза.