程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了numpy数组是通过引用传递的吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决numpy数组是通过引用传递的吗??

开发过程中遇到numpy数组是通过引用传递的吗?的问题如何解决?下面主要结合日常开发的经验,给出你关于numpy数组是通过引用传递的吗?的解决方法建议,希望对你解决numpy数组是通过引用传递的吗?有所启发或帮助;

在Python中,所有变量名都是对values的引用。

当Python评估分配时,右侧的评估先于左侧。arr - 3创建一个新数组;它不会arr就地修改。

arr = arr - 3使局部变量arr引用此新数组。它不会修改arr传递给的原始引用的值foo。变量名称arr仅绑定到新数组`arr

3。而且,arrfoo函数范围内是局部变量名。一旦foo函数结束,没有更多的参arr和Python是免费的垃圾收集值对它的引用。正如reti43所指出的,为了使arr的值受影响afoo必须返回arra`必须分配给该值:

def foo(arr):
    arr = arr - 3
    return arr
    # or simply combine both lines into `return arr - 3`

a = foo(a)

相反,arr -= 3Python将其转换为对__iadd__特殊方法的调用,它确实修改了arr就地引用的数组。

解决方法

我遇到了这样一个事实,numpy数组在多个位置通过引用传递,但是然后当我执行以下代码时,为什么foo和的行为之间有区别bar

import numpy as np

def foo(arr):
   arr = arr - 3

def bar(arr):
   arr -= 3

a = np.array([3,4,5])
foo(a)
print a # prints [3,5]

bar(a)
print a # prints [0,1,2]

我正在使用python 2.7和numpy版本1.6.1

大佬总结

以上是大佬教程为你收集整理的numpy数组是通过引用传递的吗?全部内容,希望文章能够帮你解决numpy数组是通过引用传递的吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。