[英]Converting lists from csv file to numpy array_csv format
這一部分讀取一個csv文件,創建一個列表並將該列表轉換為numpy.array:
with open ('infile.csv', 'r') as infile:
reader = csv.reader(infile)
reader_list = list(reader)
reader_array = array(reader_list)
此二維數組形狀為:
print reader_array.shape
(2938, 6)
當某些其他數據添加到csv文件(例如,另外2000行乘6列)時,數組變為1d,這可能是因為形狀不均勻。 但是,如果我打開此csv文件,請按ctrl+s
並接受Excel 不兼容格式警告以保存csv,然后再次運行代碼即可!
print reader_array.shape
(2938, 12)
我知道打開並快速保存csv文件會更改其格式,因為文件大小變得比原始文件小,但無法弄清楚它們之間的區別。 創建此csv文件的代碼如下:
with open ('outfile2.csv', 'wb') as outfile:
writer = csv.writer(outfile)
.
.
.
data = loadtxt(fname_...)
.
.
.
list_.append(sublist_)
for row in izip_longest(*averages_, fillvalue = ['']):
writer.writerow(list(chain.from_iterable(row)))
寫入csv文件的輸出是這樣的:
['1689.000000', '0.000954', '0.007900', '0.017542', '0.057176', 94.164925128317591, '1689.000000', '0.001107', '0.007444', '0.018361', '0.059156', 94.151092414521969]
['1690.000000', '0.001025', '0.007925', '0.018905', '0.060608', 94.165950129377109, '1690.000000', '0.001316', '0.007463', '0.017517', '0.058879', 94.152408118013895]
['1691.000000', '0.001124', '0.008067', '0.017934', '0.058068', 94.167074126395363, '1691.000000', '0.001226', '0.007473', '0.016914', '0.057320', 94.153634253740464]
有人可以解釋一下這里發生了什么嗎? 編寫csv時可以更改其格式嗎? 甚至csv.writer(outfile, dialect='excel')
也無濟於事。
我不確定,但也許您可以嘗試讀取二進制文件:
with open ('infile.csv', 'rb') as infile:
因為我知道'r'
和'rb'
之間'r'
換行有一些區別,所以在Excel中保存文件可能會更改換行的某些表示形式。
另外,也許您可以共享輸入文件的樣本版本進行說明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.