簡體   English   中英

如何將NUMPY數組導出到CSV或EXCEL文件

[英]How can I export my NUMPY array into a CSV or EXCEL file

這是我第一次嘗試用Python進行編碼,因此我學習了如何制作一個numpy數組,以及如何使用np.savetxt將其導出為CSV文件。 但是,當我在excel中打開CSV文件時,矩陣的列似乎合並為一個,因此無法對其進行分析。 我想知道如何解決此問題。 我不知道numpy是否適合進行此分析。 因此,如果您還有其他建議,請附上。

在這里,我創建了一個尺寸為a1,b1的空數組。

# Create an empty array with dim = (a1: num of months, b1:num of stations)

aa = np.empty((a1, b1))
aa[:] = np.nan

在這里,我用for循環逐行填充了空數組:

for i in range(1, a1):

    S_Obs = Sta_M.iloc [i-1, 2]
    R_Val = Rad_M.iloc [i, 2:]


    addadjuster = adjust.AdjustAdd(coords, coords, nnear_raws = 5)
    addadjusted = addadjuster(S_Obs, R_Val)

    aa[i,:] = addadjusted 

最后,當我逐行顯示數組時,它看起來像這樣:

aa[111, :]

array([   nan,    nan,    nan, 16.296, 24.888,    nan,    nan,    nan,
          nan,    nan,    nan,    nan,    nan,    nan, 23.496,  1.704,
       52.32 ,    nan, 25.368,    nan,    nan,    nan,    nan,    nan,
          nan,    nan,    nan, 21.264, 19.584, 22.272,  0.144, 10.008,
        1.68 ,  0.   ,    nan,    nan,    nan,    nan,    nan,  0.   ,
        0.   , 30.696,    nan,    nan, 24.888,    nan,    nan,  3.648,
       14.832,  7.944,    nan,    nan,    nan,    nan,    nan,    nan,
          nan])

我想以一種可以對其進行一些簡單分析的方式保存該數組。 它可以是EXCEL或CSV。 我使用了這段代碼,但是沒有正確顯示列。

np.savetxt("AAtest.csv", aa, delimiter="/")

您可以使用Pandas來解決問題, 在此處輸入鏈接描述

假設aa是您的numpy數組。 您可以這樣做:

import pandas as pd

df = pd.DataFrame(aa)
df.to_csv('file.csv',index=False)
In [155]: arr = np.zeros((4,5))
In [156]: arr[:] = np.nan
In [158]: arr[[0,0,1,2,2,3],[0,2,1,3,4,3]]=1.23
In [159]: arr
Out[159]: 
array([[1.23,  nan, 1.23,  nan,  nan],
       [ nan, 1.23,  nan,  nan,  nan],
       [ nan,  nan,  nan, 1.23, 1.23],
       [ nan,  nan,  nan, 1.23,  nan]])
In [160]: np.savetxt('test.csv',arr, delimiter=',')

這是一個格式正確的逗號分隔文件。 但是這些數字已用科學記數法保存。

In [161]: cat test.csv
1.229999999999999982e+00,nan,1.229999999999999982e+00,nan,nan
nan,1.229999999999999982e+00,nan,nan,nan
nan,nan,nan,1.229999999999999982e+00,1.229999999999999982e+00
nan,nan,nan,1.229999999999999982e+00,nan

要對齊列,我們需要指定一種格式。 例如:

In [162]: np.savetxt('test.csv',arr, delimiter=',', fmt='%10f')
In [163]: cat test.csv
  1.230000,       nan,  1.230000,       nan,       nan
       nan,  1.230000,       nan,       nan,       nan
       nan,       nan,       nan,  1.230000,  1.230000
       nan,       nan,       nan,  1.230000,       nan

如果由於某種原因無法使用pandas ,請堅持使用numpy

aa.tofile('my_csv.csv', sep=',', format='%s')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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