我有以下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矩阵?
答案 0 :(得分:1)
S32
是一种字符串类型。您指定的格式适用于浮点类型。要使用savetxt
保存字符串类型,您需要传递"%s"
格式化程序。请注意,默认格式对字符串类型无效,因此必须传递有效的字符串格式化程序,例如"%s"
np.savetxt('test.txt', mnist1_train_final_data, delimiter=',', fmt='%s')