I have the following 2-d numpy matrix, which was a concatenation of two matrices:
>>> mnist1_train_final_data=np.hstack((y_train_mnist_ni,features_train_mnist1))
>>> type(mnist1_train_final_data)
>>> mnist1_train_final_data.dtype
dtype('S32')
>>> mnist1_train_final_data.shape
(1149, 129)
As you can see, it is a 2-d numpy array. However, when I try to save it using the following command:
>>> np.savetxt('test.txt', mnist1_train_final_data, delimiter=',', fmt='%5.2f')
It shows me the following error:
Traceback (most recent call last): File "", line 1, in
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')
How can I save a 2-d numpy matrix in my case?
解决方案
S32 is a string type. The format you're specifying is for float types. To save a string type, with savetxt you need to pass the "%s" formatter. Note that the default format is not valid for string types so you must pass a valid string formatter such as "%s"
np.savetxt('test.txt', mnist1_train_final_data, delimiter=',', fmt='%s')