如何将numpy矩阵的内容复制到另一个?

时间:2016-10-19 14:40:51

标签: python numpy matrix

我有一个关于pythonnumpy模块基础知识的简单问题。我有以下功能:

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'的地址对我来说并不重要。唯一需要的行为是仅复制内容的第二个要求。

2 个答案:

答案 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

完全复制时,它可以处理数据