0

我得到了如下所示的 ValueError。

ValueError:由于复制错误,矩阵未对齐

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

x1[:] =  _dotproduct(x1, u)

点积就像 numpy 点积,它工作得很好,printing _dotproduct(x1, u)给出了一个有效的答案。那x1[:]是行不通的。

是什么[:]意思?我从来没有见过。

另外我该如何解决对齐错误?

编辑:
我现在已经将错误跟踪到x1[:],所以我可以执行以下操作:

hh=len(x1)

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

4

1 回答 1

0

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

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

于 2014-08-18T22:31:05.253 回答