【问题标题】:Saving a 2d numpy array of strings with single array of different size to a csv file将具有不同大小的单个数组的 2d numpy 字符串数组保存到 csv 文件
【发布时间】:2019-10-22 17:11:20
【问题描述】:

我有一个二维的 numpy 字符串数组。我正在尝试将其保存为 CSV 文件。因此,当一维数组的大小不同时,问题就来了。

例如:

b = [['a','b']    #size of single array = 2
     ['c','d']]   #size of single array = 2

所以,现在如果我尝试使用以下方式保存它:

np.savetxt("filename.csv", b, fmt ="%s", delimiter=",")

输出的 csv 文件将是:

Col1      Col2     
-------    ----     
a          b        
c          d          

这是我想要的,但现在假设我有一个不同大小的一维数组。

例如:

b = [['a','b']    #size of single array = 2
     ['c']]       #size of single array = 1

现在,当我尝试保存它时,输出文件是:

Col1      Col2     
-------   ----     
['a'      'b']           
['c']                   

而我希望它保存为:

Col1       Col2     
-------    ----     
a          b        
c                   

有人可以帮帮我吗?

【问题讨论】:

    标签: python csv numpy


    【解决方案1】:

    您可以先将其转换为 pandas 数据帧,而不是保存到 csv:

    import pandas as pd
    
    b = [['a','b'], ['c']]
    df = pd.DataFrame(b)
    df.fillna('', inplace=True)
    df.to_csv(path)
    

    但是您询问了 numpy 数组。如果您有 numpy 列表数组,则可以先将其转换为列表列表:

    import numpy as np
    import pandas as pd
    
    b = np.array([['a','b'], ['c']])
    b = list(b)
    df = pd.DataFrame(b)
    df.fillna('', inplace=True)
    df.to_csv(path)
    

    【讨论】:

    • 您好,谢谢您的回答。但是转换为列表列表不起作用。除了 pandas 数据框部分,您正在做与我的解决方案相同的事情,即调整不同大小列表的长度。
    • 它有效。我的意思是你的例子不正确。您在询问 numpy 数组,但您在示例中使用了列表列表。在这里,您将在示例中创建列表列表:b = [['a','b'],['c','d']]
    【解决方案2】:

    好的,因为问题在于嵌套列表的大小不同(np.savetxt 适用于相同大小的列表)。我试图使所有列表的大小相同。它奏效了。

    我在Question1Question2 的帮助下调整了所有不同大小的一维列表的长度

    如果有其他方法,请回答。会很有用的

    【讨论】:

      猜你喜欢
      • 2016-03-18
      • 2018-01-01
      • 2013-12-16
      • 2021-06-19
      • 1970-01-01
      • 2014-01-04
      • 2021-09-17
      • 1970-01-01
      • 2013-05-05
      相关资源
      最近更新 更多