0

我尝试使用np.hstack将列向量作为现有数组的第一列。

for j in range(5):

  sum_K[j] = 0.0

  l_multi_save = []
  for i in range(Num_files):

    Cl_array[i] = np.loadtxt(mypath+(Cl_files[i]))
    l_multi[i] = float(re.findall("\d+\.\d+", Cl_files[i])[0])

    # Compute discrete integral <=> same than mean of D_gal_ph
    if (l_multi[i] <= l_max):
      # Save l_multi and Cl_multi
      l_multi_save.append(l_multi[i])
      Cl_multi_save[i,0:5]=np.diag(Cl_array[i,j:j+5,j:j+5])

# Part for saving multipole l and C_l
np.savetxt('Array_multipole_l.txt', l_multi_save)
Cl_multi_save2 = np.array(Cl_multi_save)
print('np.shape Cl_multi_save2', np.shape(Cl_multi_save2))
# Concatenate 2 array vertically
l_multi_save = np.array(l_multi_save)
print('np.shape l_multi_save', np.shape(l_multi_save))

#Cl_multi_save3 = np.concatenate((l_multi_save [:, np.newaxis], Cl_multi_save2),axis=1)
Cl_multi_save3 = np.hstack((l_multi_save, Cl_multi_save2))
np.savetxt('Array_Cl.txt', Cl_multi_save2[0:len(l_multi_save)], fmt='%s')

我收到以下错误:

np.shape Cl_multi_save2 (36, 5)
np.shape l_multi_save (36,)
Traceback (most recent call last):
  File "compute_main.py", line 112, in <module>
    Cl_multi_save3 = np.hstack((l_multi_save, Cl_multi_save2))
  File "<__array_function__ internals>", line 6, in hstack
  File "/opt/intel/oneapi/intelpython/python3.7/lib/python3.7/site-packages/numpy/core/shape_base.py", line 344, in hstack
    return _nx.concatenate(arrs, 0)
  File "<__array_function__ internals>", line 6, in concatenate
ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 1 dimension(s) and the array at index 1 has 2 dimension(s)

我不明白为什么我会收到这个错误。但是,尺寸似乎是正确的(1 列 36 个元素和 5 列 36 个元素)。

我也尝试过np.concatenate

Cl_multi_save3 = np.concatenate((l_multi_save [:, np.newaxis], Cl_multi_save2),axis=1)

但它也不起作用。

我的 Python 脚本可能有什么问题?

4

0 回答 0