【问题标题】:How can I export my NUMPY array into a CSV or EXCEL file如何将我的 NUMPY 数组导出为 CSV 或 EXCEL 文件
【发布时间】:2019-03-24 00:34:45
【问题描述】:

这是我第一次尝试在 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="/")

【问题讨论】:

  • 我们不知道您认为什么是合适的专栏,或者您不喜欢您获得的专栏。您还尝试过savetxt 文档中的哪些内容?这是此任务的标准 numpy 编写器。

标签: python arrays excel csv numpy


【解决方案1】:

您可以使用Pandas 将您的 NumPy 数组保存为 CSV (See here)

假设 numArr 是您的 numpy 数组。你可以这样做:

import pandas as pd

df = pd.DataFrame(numArr)
df.to_csv('file.csv',index=False)

【讨论】:

  • 非常感谢。这有效,但 Index = True。
  • 是的。如果需要索引,则可以将其设置为 True。所以希望你能接受我的回答!
【解决方案2】:
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

【讨论】:

    【解决方案3】:

    如果由于某种原因您不能使用pandas,请坚持使用numpy by

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

    【讨论】:

    • np.savetxt 是用于创建csv 文件的普通numpy 工具。
    • 我知道np.savetxt,但提问者已经尝试过了,并且对生成的格式不满意(如问题中所写)
    • 但是您的建议会生成一个文件,例如: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。一切都在一条线上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 2020-02-22
    • 2020-09-11
    • 1970-01-01
    相关资源
    最近更新 更多