如何实现带拷贝的Numpy数组赋值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (115)

例如,如果我们有一个numpy数组A,我们想要一个Numpy数组B同样的元素。

这些方法有什么区别?何时分配额外内存,何时不分配?

  1. B = A
  2. B[:] = A(与B[:]=A[:]?)
  3. numpy.copy(B, A)
提问于
用户回答回答于

这三个版本都有不同的功能。

  1. 这就绑定了一个新的名称。B已命名的现有对象A。之后,它们会引用同一个对象,因此,如果您在适当的位置修改一个对象,您也会看到另一个对象的更改。
  2. 此方法将将值复制到A进入现有数组B...。这两个数组必须具有相同的形状才能工作。B[:] = A[:]做同样的事情(但是B = A[:]会做一些类似的事情。
  3. 这不是合法的语法。你可能是说B = numpy.copy(A)。这与2几乎相同,但它创建了一个新数组,而不是重用B阵列。如果没有其他参考B值时,最终结果将与2相同,但在复制过程中它将临时使用更多内存。
用户回答回答于
  1. B=A创建引用
  2. B[:]=A做一份很深的拷贝
  3. numpy.copy(B,A)复制

最后两个需要额外的内存。

扫码关注云+社区