Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将具有不同大小的单个数组的字符串的2d numpy数组保存到csv文件_Python_Csv_Numpy - Fatal编程技术网

Python 将具有不同大小的单个数组的字符串的2d numpy数组保存到csv文件

Python 将具有不同大小的单个数组的字符串的2d numpy数组保存到csv文件,python,csv,numpy,Python,Csv,Numpy,我有一个2D numpy字符串数组。我正在尝试将其保存到CSV文件。因此,当一维阵列的大小不同时,问题就出现了 例如: b = [['a','b'] #size of single array = 2 ['c','d']] #size of single array = 2 b = [['a','b'] #size of single array = 2 ['c']] #size of single array = 1 因此,现在如果我尝试使用

我有一个2D numpy字符串数组。我正在尝试将其保存到CSV文件。因此,当一维阵列的大小不同时,问题就出现了

例如:

b = [['a','b']    #size of single array = 2
     ['c','d']]   #size of single array = 2
b = [['a','b']    #size of single array = 2
     ['c']]       #size of single array = 1
因此,现在如果我尝试使用以下方法保存它:

np.savetxt("filename.csv", b, fmt ="%s", delimiter=",")
输出csv文件将是:

Col1      Col2     
-------    ----     
a          b        
c          d          
这就是我想要的,但现在让我们假设我有一个不同大小的1D阵列

例如:

b = [['a','b']    #size of single array = 2
     ['c','d']]   #size of single array = 2
b = [['a','b']    #size of single array = 2
     ['c']]       #size of single array = 1
现在,当我尝试保存它时,输出文件是:

Col1      Col2     
-------   ----     
['a'      'b']           
['c']                   
鉴于我希望将其另存为:

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

有人能帮我吗

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

在和的帮助下,我调整了所有不同大小的1D列表的长度


如果有其他方法,请回答。这将非常有用

您可以先将其转换为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)

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