ValueError:矩阵未针对复制错误和x [:]对齐

时间:2014-08-18 22:21:28

标签: python arrays numpy dot-product

我得到了如下所示的ValueError。

ValueError:矩阵未针对复制错误进行对齐

它被追溯到以下行(我没有编写此代码,我正在尝试使用它):

x1[:] =  _dotproduct(x1, u)

点积就像numpy dot积,它工作精细,printing _dotproduct(x1, u)给出一个有效的答案。 x1[:]无效。

[:]是什么意思?我从未见过这个。

另外如何解决对齐错误?

修改
我现在已将错误追溯到x1[:],因此我可以执行以下操作来代替:

hh=len(x1)

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

1 个答案:

答案 0 :(得分:0)

在这种情况下,由于它位于=符号的左侧,因此它是一个切片分配。对象x1保持相同的对象,但其所有内容都替换为右侧的序列。如果没有[:]x1将被分配给完全不同的对象。

使用切片分配意味着如果程序中有对同一变量的其他引用,则所有这些都将看到新内容。例如,函数的调用者传入容器,函数替换其内容。没有切片分配,这是不可能的。