问题
I got the ValueError as given below.
ValueError: matrices are not aligned for copy error
It was traced to the following line (I did not write this code, I am trying to use it):
x1[:] = _dotproduct(x1, u)
The dot product is like numpy dot product, it works FINE, printing _dotproduct(x1, u)
give a valid answer. It is x1[:]
that is not working.
What does [:]
mean? I have never seen that.
Also how can I solve the error of alignment?
Edit:
I have now traced the error to x1[:]
, so instead of this can I do the following:
hh=len(x1)
x1[0:hh]=_dotproduct(x1, u)
?
回答1:
In this case, since it's on the left side of the =
sign, it's a slice assignment. The object x1
remains the same object, but all its contents are replaced with the sequence on the right. Without the [:]
, x1
would be assigned to a totally different object.
Using a slice assignment means that if there are other references to the same variable in your program, all of these will see the new contents. For example, the caller of a function passes in a container and the function replaces its contents. This wouldn't be possible without the slice assignment.
来源:https://stackoverflow.com/questions/25372947/valueerror-matrices-are-not-aligned-for-copy-error-and-x