Python:返回循环结果时出错

Python:返回循环结果时出错,python,loops,for-loop,file-io,Python,Loops,For Loop,File Io,以下代码的输出仅保存结果的最后一行,而不是将每一行值放入csv文件。我对python的知识有限。我认为我的循环部分是错误的。有人能帮我吗 代码 import numpy as np from numpy import genfromtxt with open('binary.csv') as actg: actg=actg.readlines() with open('single.csv') as single: single=single.readlines

以下代码的输出仅保存结果的最后一行,而不是将每一行值放入csv文件。我对python的知识有限。我认为我的循环部分是错误的。有人能帮我吗

代码

import numpy as np
from numpy import genfromtxt

with open('binary.csv') as actg:
    actg=actg.readlines()
    with open('single.csv') as single:
        single=single.readlines()
        with open('division.csv') as division:
            division=division.readlines()

            for line in actg:
                for line2 in single:
                    for line1 in division:

                        myarray = np.fromstring(line, dtype=float, sep=',')
                        myarray = myarray.reshape((-1, 3, 4))
                        a=np.asmatrix(myarray)
                        a=np.array(a)

                        single1 = np.fromstring(line2, dtype=float, sep=',')
                        single1 = single1.reshape((-1, 4))
                        s=np.asmatrix(single1)
                        s=np.array(s)

                        division1 = np.fromstring(line1, dtype=float, sep=',')
                        m=np.asmatrix(division1)
                        m=np.array(m)
                        res2 = (s[np.newaxis,:,:] / m[:,np.newaxis,:] * a).sum(axis=-1)

np.savetxt("output.csv", res2, delimiter=",")
binary.csv

0,1,0,0,1,0,0,0,0,0,0,1
0,0,1,0,1,0,0,0,1,0,0,0
0.4,0.5,0.7,0.1
0.2,0.8,0.9,0.3
single.csv:

0.28,0.22,0.23,0.27,0.12,0.29,0.34,0.21,0.44,0.56,0.51,0.65
division.csv

0,1,0,0,1,0,0,0,0,0,0,1
0,0,1,0,1,0,0,0,1,0,0,0
0.4,0.5,0.7,0.1
0.2,0.8,0.9,0.3
预期产出

 0.44,0.3,6.5
 0.26,0.6,2.2
0.26,0.6,2.2
实际产出

 0.44,0.3,6.5
 0.26,0.6,2.2
0.26,0.6,2.2

这不是你的理解。这是您对循环逻辑的理解

如果仔细观察循环,您(而不是Python)总是保留最后的元素

在第一个和第二个循环中,您每次都覆盖所需的变量,并且不保留每次迭代的总体信息

在最后一个循环中,在每次迭代中将
变量声明为新列表


此外,
i
变量除了作为for循环中的索引变量外,不会在任何地方设置

因为只有在循环完成后才写出结果,所以只能看到最后一个结果。
此外,我希望从该数据中得到4个结果,而不是2个。
您需要在每次迭代中写入输出,或者存储每次迭代,然后写出存储的值。
每次计算时,请尝试打印
res2
,您将看到如下内容:

('Final Results', array([[ 0.44,  0.3 ,  6.5 ]]))
('Final Results', array([[ 0.275     ,  0.6       ,  2.16666667]]))
('Final Results', array([[ 0.32857143,  0.3       ,  1.1       ]]))
('Final Results', array([[ 0.25555556,  0.6       ,  2.2       ]]))

嗨,我刚刚编辑了我的帖子。输出仍然不正确:(嘿,当然是不正确的,因为你还在犯同样的错误。我怀疑这段代码是用于某种练习的,你发现它已经准备好了。其中的错误非常微小,为你提供解决方案对你没有好处。你应该阅读编程中的循环。干杯!我使用csv writerow作为解决问题的技巧上面的问题,尽管它不完全适合我的情况。谢谢:)除法部分应该使用元素运算符,并且只返回两行答案,而不是四行。我还不知道如何执行该部分:(