使用Numpy将零添加到矩阵的缺失值

时间:2015-03-05 19:12:19

标签: python numpy

我使用Numpy(Python)为for循环的每个第i次迭代获得了两个矩阵L和R的预期维数为2200x88的值。 一些矩阵具有较少的元素,例如1200x55,在这些情况下,我必须向矩阵添加零以将其重新整形为2200x88维度。我创建了以下程序来解决这个问题:

        for line in infile:
        line = line.strip()
        #more code here, l is matrix 1 of the ith iteration, r is matrix 2 of ith iteration 
ls1, ls2=l.shape
rs1, rs2= r.shape
            if ls1 != 2200 | ls2 != 88:
                l.resize((2200, 88), refcheck=False)
            if rs1 != 2200 | rs2 != 88:
                r.resize((2200, 88), refcheck=False)
            var = np.concatenate((l, r), axis=0).reshape(1,387200)

问题是当检测到矩阵R或L的尺寸不是2200×88时,我得到以下错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

有没有人就如何解决这个问题提出任何建议?

谢谢。

1 个答案:

答案 0 :(得分:0)

由于l是一个矩阵,l[0]是该矩阵的一个条带,一个数组。

这部分:

if l[0] != 2200 | l[1] != 88

导致您的错误,因为您正在尝试"或"两个阵列。

所以而不是

ls1, ls2=l.shape
rs1, rs2= r.shape
if l[0] != 2200 | l[1] != 88:
    l.resize((2200, 88), refcheck=False)
if r[0] != 2200 | r[1] != 88:
    r.resize((2200, 88), refcheck=False)

考虑:

 if l.shape != (2200, 88):
     l.resize((2200, 88), refcheck=False)
 if r.shape != (2200, 88):
     r.resize((2200, 88), refcheck=False)