mrg*_*oom 85 python arrays numpy
例如,如果我们有一个numpy数组A,并且我们想要一个具有相同元素的numpy数组B.
以下(见下文)方法有什么区别?什么时候分配额外的内存,什么时候不分配?
B = AB[:] = A(和B[:]=A[:]?一样)numpy.copy(B, A)Blc*_*ght 105
所有三个版本都做不同的事情:
B = A
这会将新名称绑定B到已命名的现有对象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?
Mai*_*mon 27
B=A 创建一个参考B[:]=A 制作副本numpy.copy(B,A) 制作副本最后两个需要额外的内存.
要制作深层副本,您需要使用 B = copy.deepcopy(A)