Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尽管代码完全相同,为什么结果不同?_Python_Function_Numpy - Fatal编程技术网

Python 尽管代码完全相同,为什么结果不同?

Python 尽管代码完全相同,为什么结果不同?,python,function,numpy,Python,Function,Numpy,我想构建一个函数,将两个numpy数组求和为一个新数组,当且仅当不同的索引为euqal时 x = np.array([2,1,1,1]) y=np.array([2,1,0,1]) overlap = np.zeros(4) for i in range(0,len(x)): if x[i] == y[i]: overlap[i]= x[i]+y[i] print(overlap) [4. 2. 2. 2.] 这是意料之中的事。现在我想定义函数,但是输出是不同

我想构建一个函数,将两个numpy数组求和为一个新数组,当且仅当不同的索引为euqal时

x = np.array([2,1,1,1])
y=np.array([2,1,0,1])   

overlap = np.zeros(4)
for i in range(0,len(x)):
    if x[i] == y[i]:
        overlap[i]= x[i]+y[i]

print(overlap)
[4. 2. 2. 2.]
这是意料之中的事。现在我想定义函数,但是输出是不同的,尽管代码完全相同

    def sum_overlap(x,y):
       overlap = np.zeros(4)
       for i in range(0,len(x),1):
           if x[i] == y[i]:
              overlap[i] = x[i] + y[i]
              print(overlap)

sum_overlap(x,y)
[4. 0. 0. 0.]
[4. 2. 0. 0.]
[4. 2. 2. 0.]
[4. 2. 2. 2.]

我认为它与迭代器有关,但我无法理解。

您的print语句处于循环中,因此每次调用它时,它都会打印出列表。将打印语句从循环中取出,但保留在函数中,并且输出应与工作代码相同:

def sum_overlap(x,y):
    overlap = np.zeros(4)
    for i in range(0,len(x),1):
        if x[i] == y[i]:
            overlap[i] = x[i] + y[i]
    return overlap
      

您打印了多次,但最终结果是相同的。你不应该退回它吗?