无法将numpy 2-d数组保存到文件中

时间:2017-08-28 01:37:28

标签: python arrays numpy matrix

我有以下2-d numpy矩阵,它是两个矩阵的串联:

     >>> mnist1_train_final_data=np.hstack((y_train_mnist_ni,features_train_mnist1))
     >>> type(mnist1_train_final_data)
     <type 'numpy.ndarray'>
     >>> mnist1_train_final_data.dtype
     dtype('S32')
     >>> mnist1_train_final_data.shape
      (1149, 129)

如您所见,它是一个2维的numpy数组。但是,当我尝试使用以下命令保存它时:

>>> np.savetxt('test.txt', mnist1_train_final_data, delimiter=',', fmt='%5.2f') 

它显示以下错误:

Traceback (most recent call last):   File "<stdin>", line 1, in
<module>   File "/usr/lib/python2.7/site-packages/numpy/lib/npyio.py",
line 1162, in savetxt
    % (str(X.dtype), format)) TypeError: Mismatch between array dtype ('|S32') and format specifier
('%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f')

如何在我的情况下保存2-d numpy矩阵?

1 个答案:

答案 0 :(得分:1)

S32是一种字符串类型。您指定的格式适用于浮点类型。要使用savetxt保存字符串类型,您需要传递"%s"格式化程序。请注意,默认格式对字符串类型无效,因此必须传递有效的字符串格式化程序,例如"%s"

np.savetxt('test.txt', mnist1_train_final_data, delimiter=',', fmt='%s')