我使用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()
有没有人就如何解决这个问题提出任何建议?
谢谢。
答案 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)