例如,如果我们有一个numpy数组A,并且我们想要一个具有相同元素的numpy数组B

以下(见下文)方法之间的区别是什么?什么时候分配额外的内存,什么时候不分配?

  • B = A
  • B[:] = A(与B[:]=A[:]相同?)
  • numpy.copy(B, A)
  • 最佳答案

    这三个版本都做不同的事情:

  • B = A
    这会将新名称B绑定(bind)到已经名为A的现有对象。之后,它们引用同一个对象,因此,如果您就地修改一个对象,您也会在另一个对象中看到更改。
  • B[:] = A(与B[:]=A[:]相同?)

    这会将值从A复制到现有数组B中。这两个阵列必须具有相同的形状才能起作用。 B[:] = A[:]做同样的事情(但是B = A[:]会做类似1的事情)。
  • numpy.copy(B, A)
    这不是合法的语法。您可能是B = numpy.copy(A)。这几乎与2相同,但是它创建了一个新数组,而不是重用B数组。如果没有其他对先前B值的引用,则最终结果将与2相同,但是在复制期间它将临时使用更多内存。

    还是您的意思是numpy.copyto(B, A),合法,等于2?
  • 10-06 05:18
    查看更多