在python中保存多个变量

2024-10-05 12:20:45 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的脚本,它有一些问题。我只想在VSTACK后使用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
>>>

Tags: a2ifa1npa3d1printappend
1条回答
网友
1楼 · 发布于 2024-10-05 12:20:45

据我所知,你的代码除了在NumPy会引发异常的情况下是有效的。这确实是意料之中的,因为vstack使用不同形状的数组是没有意义的

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

a1.shape == a2.shape

它将根据数组的形状返回True或False。或者简单地使用异常来控制阵列形状不相同时的操作

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

相关问题 更多 >

    热门问题