![](/img/trans.png)
[英]Python: How to save lists of 2D numpy arrays of different lengths
[英]Python 2.7: How to save two arrays with different lengths to file?
我正在嘗試將兩個數組(arr1,arr2)水平保存到文件中。 問題是兩個數組的長度不同。 所以我不能使用np.v_stack()來連接它們。 我要保存的兩個數組:arr1(5,3):
array([[-15.220009 , 10.6649946, -0.8999929],
[-15.000009 , 11.3639946, -1.5949929],
[-14.036009 , 9.9939946, -0.3249929],
[-12.958009 , 10.9589946, 0.2050071],
[-12.179009 , 10.3039946, 0.5970071]])
arr2(4,3):
array([[-15.809009 , 10.0499946, -1.4429929],
[-15.804009 , 10.9649946, -0.1329929],
[-13.677009 , 9.3459946, -1.1249929],
[-13.420009 , 11.4869946, 1.0390071]])
我期望的輸出:
-15.220009, 10.6649946, -0.8999929, -15.809009, 10.0499946, -1.4429929
-15.000009, 11.3639946, -1.5949929, -15.804009, 10.9649946, -0.1329929
-14.036009, 9.9939946, -0.3249929, -13.677009, 9.3459946, -1.1249929
-12.958009, 10.9589946, 0.2050071, -13.420009, 11.4869946, 1.0390071
-12.179009, 10.3039946, 0.5970071
我在Google上進行了搜索,但找不到有用的解決方案。
arr = [[-15.220009, 10.6649946, -0.8999929],
[-15.000009, 11.3639946, -1.5949929],
[-14.036009, 9.9939946, -0.3249929],
[-12.958009, 10.9589946, 0.2050071],
[-12.179009, 10.3039946, 0.5970071]]
arr2 = [[-15.809009, 10.0499946, -1.4429929],
[-15.804009, 10.9649946, -0.1329929],
[-13.677009, 9.3459946, -1.1249929],
[-13.420009, 11.4869946, 1.0390071]]
for i in range(max(len(arr), len(arr2))):
str1 = (", ".join(map(str, arr[i]))) if i < len(arr) else ""
str2 = (", ".join(map(str, arr2[i]))) if i < len(arr2) else ""
print str1 + ', ' + str2
這不會將其保存到文件中,但是您可以將打印內容保存為文件來代替。 請注意,如果第一個數組比第二個數組短,則第二個數組的多余行將出現在第一個數組下方。
編輯
一線解決方案
print "\n".join([", ".join(map(str, (arr[i] if i < len(arr) else []) + (arr2[i] if i < len(arr2) else []))) for i in range(max(len(arr), len(arr2)))])
我已經通過幾個步驟獲得了預期的輸出。 首先,我使用np.hstack()將較大的切片與較小的切片連接在一起。 然后打開一個文件,並使用np.savetxt()將arr3和arr1 [-1:](較大的部分的剩余部分)依次寫入文件。 例如:
arr3=np.hstack((arr1[:-1], arr2))
with open('out.dat', 'w') as output:
np.savetxt(output, arr3, fmt=','.join(['% 12.7f']*6))
np.savetxt(output, arr1[-1:], fmt=','.join(['% 12.7f']*3))
x = np.concatenate((arr,arr2))
np.save('fileName', x)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.