首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用copy进行Numpy数组赋值

使用copy进行Numpy数组赋值
EN

Stack Overflow用户
提问于 2013-10-30 15:44:25
回答 3查看 73K关注 0票数 121

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

以下两种方法(见下文)有什么不同?什么时候会分配额外的内存,什么时候不会?

  1. B = A
  2. B[:] = A (与B[:]=A[:]?)
  3. numpy.copy(B, A)

相同

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-30 15:59:38

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

  1. B = A

这会将一个新名称B绑定到已命名为A的现有对象。之后,它们引用相同的对象,所以如果您就地修改其中一个对象,您将通过另一个too.

  • 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?。

票数 151
EN

Stack Overflow用户

发布于 2013-10-30 15:52:53

  1. B=A创建reference
  2. B[:]=A makes a copy
  3. numpy.copy(B,A) makes a copy

后两个需要额外的内存。

要制作深度副本,您需要使用B = copy.deepcopy(A)

票数 32
EN

Stack Overflow用户

发布于 2016-09-15 00:18:31

对我来说,这是唯一有效的答案:

代码语言:javascript
复制
B=numpy.array(A)
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19676538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档