我有一个列表,如下所示:
signals_list = [ [1,4,7..... 5,7],[4,-7,1....-5,-8,4],.....]
我想在csv文件中按列编写这些内部列表。我有176个内部列表,需要创建176个列。每个内部列表都有近39400个瞬间。
Csv应如下所示:
What i have tried:
我所做的
# GETTING ALL THE WAV FILES FROM DIRECTORY AND CONVERTING INTO NUMPY ARRAY
path = "C:/Users/Marwat/.spyder-py3/FYP/input/set_a/"
files = os.listdir(path)
print(len(files))
signals_list = []
for filename in glob.glob(os.path.join(path, '*.wav')):
sample_rate, data = wavfile.read(filename)
signals = [np.array(data,dtype=int)]
signals_list.append(signals)
# WRITING SIGNALS TO CSV FILE
d = [signals_list]
col_name = 1
transposed_signals = zip_longest(*d, fillvalue = '')
with open('C:/Users/Marwat/.spyder-py3/FYP/input/numbers.csv', 'w', encoding="ISO-8859-1", newline='') as myfile:
wr = csv.writer(myfile)
wr.writerow('sound_'+ str(col_name))
wr.writerows(transposed_signals)
col_name +=1
myfile.close()
OUTPUT
我们将非常感谢您的帮助
你就快成功了。你遇到的两个问题是:
1)将
signals_list
粘贴到外部列表中。将signals_list
直接传递给zip_longest
,您应该被设置在那里:2)写入标题行。首先,您需要编写该行中的所有列(您只需编写一列)。另外,
writerow()
需要iterable,这就是为什么在传递字符串时,每列只能得到一个字符。试试这个,省去col_name
:把这一切放在一起(只是第二部分),你应该有:
zip()
^{} 转换一个列表*,因此行变成列,列变成行。根据第二个链接,您可以执行以下操作:
如果这对你不起作用,请告诉我它怎么不起作用,这样我就可以解决它。你知道吗
*它实际上并不转置一个列表,而是“聚合来自每个iterables的元素”,在这种情况下,基本上是相同的。你知道吗
您可以在numpy数组中转换列表并将其转置
然后使用pandas创建一个数据帧并将其存储为csv
相关问题 更多 >
编程相关推荐