当数组dtype和格式说明符不匹配时,如何将数组堆栈保存为.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')

我不知道该怎么办

savetxt在Numpy中允许您指定数组写入文件时如何显示的格式。默认格式(fmt='%.18e')只能格式化只包含数字元素的数组。您的数组包含字符串(dtype='<U5'意味着类型是长度为5的unicode),因此会引发错误。在您的示例中,还应该包括fmt='%s'作为参数,以确保输出文件中的数组元素被格式化为字符串。例如:

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

最新更新