带复制的 Numpy 数组赋值
- 2025-01-22 08:45:00
- admin 原创
- 73
问题描述:
例如,如果我们有一个numpy
数组A
,并且我们想要一个具有相同元素的numpy
数组。B
以下方法(见下文)有什么区别?何时分配额外内存,何时不分配?
B = A
B[:] = A
(与 ? 相同B[:]=A[:]
)numpy.copy(B, A)
解决方案 1:
这三个版本的作用不同:
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?
解决方案 2:
B=A
创建引用B[:]=A
复制numpy.copy(B,A)
复制
最后两个需要额外的内存。
要进行深层复制,您需要使用B = copy.deepcopy(A)
解决方案 3:
对我来说这是唯一可行的答案:
B=numpy.array(A)
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD