0

这是我的脚本,它有一些问题。我只想在 vstacking 之后使用 numpy savetxt 保存树变量 a1、a2、a3。当在循环中找到所有变量(a1、a2、a3)时,它运行良好。当发现其中一个为空时,它会出现问题。那么,如何解决。任何帮助将不胜感激。

a1, a2, a3 =[], [], [], 
for a in xfile_UH:
    print(a)
    d1=np.genfromtxt(a,  dtype=str, delimiter='', usecols=np.arange(0,10))
    l=d1[0,5]
    l1=d1[0,6]
    m=d1[1,4]
    n=d1[1,5]
    p=d1[1,6]
    r=d1[1,8]
    q=d1[1,9]   
    if l=='L':
     if m=='0':
      if n=='0':
       if p=='0':
        if q=='0':
         print(d1[0,0])
         a11, a12, a13, a14, a15=d1[0,6], d1[0,7],d1[0,4], d1[1,8], d1[2,8]
         z1=np.hstack([a11, a12, a13, a14, a15])
         a1.append(z1)
         print(z1)
    if l=='L':
     if m=='0':
      if n=='0':
       if p=='0':
        if q>'0':
         print(d1[0,0])
         a11, a12, a13, a14, a15=d1[0,6], d1[0,7],d1[0,4], d1[1,9], d1[2,9]
         z2=np.hstack([a11, a12, a13, a14, a15])
         a2.append(z2)
    if l=='L':
     if m=='0':
      if n=='0':
       if p>'0':
        if r>'0':
         if q=='0':
          print(d1[0,0])
          a11, a12, a13, a14, a15=d1[0,6], d1[0,7],d1[0,4], d1[1,8], d1[2,8]
          z3=np.hstack([a11, a12, a13, a14, a15])
          a3.append(z3)
    else:
        print('continue')
np.savetxt('output.txt', np.vstack([a1, a2, a3]), fmt='%s', delimiter=',')   `                                                                Error I found:     raise ValueError('all input arrays must have the same shape')
ValueError: all input arrays must have the same shape
>>>
4

1 回答 1

0

据我了解,您的代码可以正常工作,除非 NumPy 会引发异常。这确实是意料之中的,因为 vstack 处理不同形状的数组没有意义。

在循环中,您应该检查各个数组是否具有相同的形状。您可以使用

a1.shape == a2.shape

这将根据数组的形状返回 True 或 False。或者简单地使用异常来控制在您的数组不具有相同形状的情况下要做什么。

另外,为了便于阅读,请尝试将代码复制到单独的块中,而不是单行。

于 2021-02-26T15:05:20.587 回答