Python保存列长度不同的向量数组至TXT文件的方法
解决不同长度数组对的TXT列存储问题
情况1:逐组写入(x,y)元素对
如果需要把每一组A[i]和B[i]的元素一一对应,逐行连续写入TXT(先写第一组的所有(x,y)对,再写第二组,以此类推),可以用以下代码实现:
import numpy as np # 示例数据,替换为你的实际A、B数组列表 A = [np.array([1,2,3]), np.array([1,2,3,4]), np.array([11,13,2,1,5,7,9,0])] B = [np.array([11,21,31]), np.array([16,27,38,48]), np.array([114,134,24,14,54,74,94,4])] with open('output_pairs.txt', 'w') as f: for arr_a, arr_b in zip(A, B): # 若组内数组长度不一致,可选择截断到较短长度(也可补NaN,按需调整) min_len = min(len(arr_a), len(arr_b)) for x, y in zip(arr_a[:min_len], arr_b[:min_len]): f.write(f"{x}\t{y}\n") # 可选:组之间加空行分隔 f.write("\n")
情况2:将所有数组作为列并排(短数组补缺失值)
如果需要把A和B的数组依次作为列(A[0]列、B[0]列、A[1]列、B[1]列……),由于数组长度不同,需先将所有数组补全到最长数组的长度,用NaN填充缺失值,再保存:
import numpy as np A = [np.array([1,2,3]), np.array([1,2,3,4]), np.array([11,13,2,1,5,7,9,0])] B = [np.array([11,21,31]), np.array([16,27,38,48]), np.array([114,134,24,14,54,74,94,4])] # 获取所有数组的最大长度 max_len = max(len(arr) for arr in A + B) # 补全每个数组到max_len长度,缺失值用NaN填充 padded_cols = [] for arr_a, arr_b in zip(A, B): padded_a = np.pad(arr_a, (0, max_len - len(arr_a)), mode='constant', constant_values=np.nan) padded_b = np.pad(arr_b, (0, max_len - len(arr_b)), mode='constant', constant_values=np.nan) padded_cols.extend([padded_a, padded_b]) # 转换为二维数组并保存 result = np.column_stack(padded_cols) np.savetxt('output_columns.txt', result, fmt='%.2f', delimiter='\t', nanstr='NaN')
说明
- 情况1适合按组查看(x,y)对应关系的场景,无需强制对齐长度,直接逐元素写入。
- 情况2适合需要将所有数组作为列对齐展示的场景,通过补
NaN满足np.savetxt对输入维度的要求。
内容的提问来源于stack exchange,提问作者H. Khani
相关产品推荐
相关产品推荐

