2017-08-28 86 views
1

我有以下2-d numpy的基质,这是两个矩阵的级联:无法保存一个numpy的2-d阵列到文件

 >>> 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 -d 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

你期待数组包含字符串? 'savetxt'在行上迭代,并且每行都有'fmt%tuple(row)',其中'fmt'是'不匹配'中的字符串。每个129列有一个'%f5.2'。 – hpaulj

回答

1

S32是一个字符串类型。你指定的格式是浮点类型。要保存字符串类型,请使用savetxt,您需要通过"%s"格式化程序。请注意,默认格式是无效的字符串类型,所以你必须通过一个有效的字符串格式,如"%s"

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