簡體   English   中英

將列表從csv文件轉換為numpy array_csv格式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM