Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays_Numpy - Fatal编程技术网

Python 向循环中的数组添加项

Python 向循环中的数组添加项,python,arrays,numpy,Python,Arrays,Numpy,我尝试在循环中向numpy.array添加一行,但它不起作用,尽管我没有收到任何错误。我的总体目标是比较两个文件,并创建第三个文件来总结比较 ipython import numpy as np 我的数组 我的职能 这样使用它 coverage(aResult,alist1,'list1',0,aList2,'list',0) 但结果没有改变 打印(aResult) 输出:(['row1','occurrence']) 受通缉的 (['row1','occurrence'],['A','sha

我尝试在循环中向numpy.array添加一行,但它不起作用,尽管我没有收到任何错误。我的总体目标是比较两个文件,并创建第三个文件来总结比较

ipython

import numpy as np
我的数组 我的职能 这样使用它
coverage(aResult,alist1,'list1',0,aList2,'list',0)

但结果没有改变
打印(aResult)
输出:(['row1','occurrence'])

受通缉的
(['row1','occurrence'],['A','shared'],['B','shared'],['C','list1'],['D','list2'])

已修复:

import numpy as np

#my arrays

aList1=np.array([['A','we'],['A','we'],['B','we'],['C','de']])
aList2=np.array([['A'],['B'],['D']])
aResult=np.array(['row1','occurence'])

#my function

def coverageA(array,file1,name1,colum1,file2,name2,colum2):
    x=file1[1:,colum1]
    y=file2[1:,colum2]
    for f in x:
        if f in y:
            array=np.vstack((array,np.array([f,'shared'])))
        else:
            array=np.vstack((array,np.array([f,name1])))
    for f in y:
        if f not in x:
            array=np.vstack((array,np.array([f,name2])))
    print(array)
    return array

#and use it this way

aResult=coverageA(aResult,aList1,'list1', 0,aList2,'list2',0)
#but aResult didn't change

print(aResult) 
#output:(['row1','occurence'])
#wanted

#([['row1','occurence'],['A', 'shared'],['B', 'shared'],['C','list1'],['D','list2']])
解释是,在python中,参数是通过赋值传递的,这一点解释得很好。在行
array=np.vstack((array,np.array([f,'shared']))
中,一个新的numpy数组在一个新的位置im内存中创建(数组指向此位置),但结果仍然指向它的旧位置。您可以使用
打印(id(数组))
检查内存地址

def coverageA(array,file1,name1,colum1,file2,name2,colum2):
     x=file1[1:,colum1]
     y=file2[1:,colum2]
     for f in x:
         if f in y:
             array=np.vstack((array,np.array([f,'shared'])))
         else:
             array=np.vstack((array,np.array([f,name1])))
     for f in y:
         if f not in x:
             array=np.vstack((array,np.array([f,name2])))
     return
import numpy as np

#my arrays

aList1=np.array([['A','we'],['A','we'],['B','we'],['C','de']])
aList2=np.array([['A'],['B'],['D']])
aResult=np.array(['row1','occurence'])

#my function

def coverageA(array,file1,name1,colum1,file2,name2,colum2):
    x=file1[1:,colum1]
    y=file2[1:,colum2]
    for f in x:
        if f in y:
            array=np.vstack((array,np.array([f,'shared'])))
        else:
            array=np.vstack((array,np.array([f,name1])))
    for f in y:
        if f not in x:
            array=np.vstack((array,np.array([f,name2])))
    print(array)
    return array

#and use it this way

aResult=coverageA(aResult,aList1,'list1', 0,aList2,'list2',0)
#but aResult didn't change

print(aResult) 
#output:(['row1','occurence'])
#wanted

#([['row1','occurence'],['A', 'shared'],['B', 'shared'],['C','list1'],['D','list2']])