我有兩個要存盤在 csv 檔案中的 numpy 陣列(A,B)和 2 個標量值(C,D)。我知道如何在其中撰寫一個 numpy 陣列:
A = np.array(...)
np.savetxt('path/to/file/filename.csv', A, delimiter = ",")
我希望 csv 檔案的前兩列包含 2 個陣列 A 和 B,然后將 2 個標量值 C 和 D 作為第 3 列和第 4 列的第一個條目。
uj5u.com熱心網友回復:
您需要先轉換陣列,也許使用zip_longest:
import csv
from itertools import zip_longest
import numpy as np
A = np.array(...) # 1d arrays
B = np.array(...)
C = 1.0 # scalars
D = 2.0
with open('filename.csv', 'w', newline='') as f:
w = csv.writer(f)
for row in zip_longest(A, B, [C], [D], fillvalue=''):
w.writerow(row)
如果 A 和 B 很長,則每行末尾都會有很多空白單元格,可以修剪。
uj5u.com熱心網友回復:
我認為你必須使用迭代來做到這一點,因為每一列都有不同的大小。所以保存的陣列必須指定為物件型別,如果你想這樣做的話np.savetxt。如果您使用要保存的物件np.savetxt型別陣列,它只會填充csv檔案的第一行:
A = np.array([2, 4, 5])
B = np.array([2, 7, 9, 1])
C = 1
D = 7
cc = np.zeros((1, 4), dtype=object)
cc[0, :] = A, B, C, D
np.savetxt('obj.csv', cc, delimiter=",", fmt='%s')
這將是:

我不認為它是否可以僅由 NumPy 處理,并且可能更好地嘗試其他庫,例如 Pandas 或……或者使用迭代打開csv檔案并匯入其中。
uj5u.com熱心網友回復:
我假設所有 A 和 B 的長度相同。我會使用 pandas 以我想要的方式組織它,然后pandas.DataFrame.to_csv()
我會這樣做:
import pandas as pd
import numpy as np
A = B = np.arange(5) # 1d arrays
C = 1.0 # scalars
D = 2.0
df = pd.DataFrame({'A': A, 'B': B, 'C': np.NaN, 'D': np.NaN})
df.loc[0, 'C'] = C # change 0 to 1 to fill the next row
df.loc[0, 'D'] = D # change 0 to 1 to fill the next row
df.to_csv('path/to/file/filename.csv')
uj5u.com熱心網友回復:
由于 csv 檔案是逗號分隔值,因此列的術語對 excel 檔案更有用。如果我理解正確,您希望您的資料形狀像這樣
A1 B1 C D
A2 B2
A3 B3
. .
. .
. .
將陣列更改為 pandas 資料框并保存您喜歡的任何內容(excel 或 csv)非常有用。如果我們回到您的問題,解決方案可能是這樣的:
A = np.array([1,2,3,4,5])
B = np.array([5,4,3,2,1])
C = [5]
D = [6]
_array = [A,B,C,D] #all values into list
data = pd.DataFrame(_array).T # in order to get what you want, you have to transpose dataframe
data.to_csv('/Users/../data.csv') # save as csv file
data.to_excel('/Users/../data.xlsx',index=False,header=False) # save as excel file to get column based
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/464536.html
