numpy 我怎样才能停止一个函数更新一个数组?

ut6juiuv  于 2023-04-12  发布在  其他
关注(0)|答案(1)|浏览(123)

下面的函数在每次调用时更新数组的值:

import numpy as np

def disc(vectors, i, ptr, total):
    if ptr[i] < 0:
        return total
    else:
        total+=vectors[i]
        return disc(vectors, ptr[i],ptr,total)

testvec=np.array([[0,0],[1,0],[0,0],[0,0],[1,-1],[0,-1],[1,-1],[0,-1],[0,0]])
ptr=np.array([-10,2,-6,-10,2,2,4,4,-10])
t=np.array([0,0])
print(disc(testvec,7,ptr,t))
print(t)
print(disc(testvec,1,ptr,t))

也就是说,在调用数组t之后,它的值被更新了。是否可以在函数中将t重置为[0,0],或者根本不改变值?
对于上下文,我正在实现一个用于渗透的 Package 算法。该函数对树上的向量求和,更多细节请参见https://arxiv.org/pdf/cond-mat/0101295.pdf

qoefvg9y

qoefvg9y1#

在您的特定情况下,如果您不希望修改变量,您可以不修改它:

def disc(vectors, i, ptr, total):
    if ptr[i] < 0:
        return total
    else:
        return disc(vectors, ptr[i],ptr,total+vectors[i])

更一般地说,您可以将函数的参数 Package 在copy.deepcopy中,以确保只传递副本,而不会修改原始变量。

相关问题