我有一个关于python
和numpy
模块基础知识的简单问题。我有以下功能:
def update_x_last(self, x):
self.x_last = x
类属性x_last和函数参数x都从类型numpy.matrix
初始化并具有相同的形状。 (x.shape = x_last.shape = (4,1
)
我注意到上面的代码没有将参数x
的内容复制到x_last
,但它使对象x_last
指向x
的地址
但我想做的是以下内容:
self.x_last
x
的内容复制到self.x_last
这样做的最佳方式是什么?
修改 要求'不要改变'self.x_last'的地址对我来说并不重要。唯一需要的行为是仅复制内容的第二个要求。
答案 0 :(得分:3)
import numpy as np
self.x_last = np.copy(x)
答案 1 :(得分:2)
如果形状相同,则其中任何一个都符合您的要求:
self.x_last[...] = x
# or self.x_last[()] = x
# or self.x_last[:] = x
我认为第一个可能是最清楚的
让我们快速了解您的要求:
仅将x的内容复制到self.x_last
似乎合理。这意味着如果x
继续发生变化,那么x_last
就不会随之改变
请勿更改
的地址self.x_last
这不会给你买任何东西。 IMO,这实际上更糟糕,因为在另一个线程中使用x_last
的函数会意外地在它们下面发生变化,更糟糕的是,当数据从x