当数组dtype和格式说明符不匹配时,如何将数组堆栈保存到.csv?

时间:2016-09-22 18:43:57

标签: python arrays python-3.x csv

这些是我的数组堆栈,两者都是按列排列的变量。

final_a = np.stack((four, five, st, dist, ru), axis=-1)

final_b = np.stack((org, own, origin, init), axis=-1)

示例:

In: final_a 
Out: array([['9999', '10793', ' 1', '99', '2'],
       ['9999', '10799', ' 1', '99', '2'],
       ['9999', '10712', ' 1', '99', '2'],
       ..., 
       ['9999', '23960', '33', '99', '1'],
       ['9999', '82920', '33', '99', '2'],
       ['9999', '82920', '33', '99', '2']], 
      dtype='<U5')

但是当我尝试使用以下代码将它们中的任何一个保存到.csv文件时:

np.savetxt("/Users/jaisaranc/Documents/ASI selected data - A.csv", final_a, delimiter=",")

它抛出了这个错误:

TypeError: Mismatch between array dtype ('<U5') and format specifier ('%.18e,%.18e,%.18e,%.18e,%.18e')

我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

Numpy中的

savetxt允许您specify a format了解数组在写入文件时的显示方式。默认格式(fmt='%.18e')只能格式化仅包含数字元素的数组。您的数组包含字符串(dtype='<U5'表示类型为unicode,长度为5)因此会引发错误。在您的情况下,您还应该包含fmt='%s'作为参数,以确保输出文件中的数组元素被格式化为字符串。例如:

np.savetxt("example.csv", final_a, delimeter=",", fmt="%s")