例如,如果我们有一个numpyarray A,并且我们想要一个具有相同元素的numpy数组B。
以下(见下文)方法之间的区别是什么?什么时候分配额外的内存,什么时候不分配?
B = A B[:] = A(与B[:]=A[:]?相同) numpy.copy(B, A) 问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这三个版本都做不同的事情:
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?