1

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)
     <type 'numpy.ndarray'>
     >>> 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 "<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')

How can I save a 2-d numpy matrix in my case?

1
  • 1
    Are you expecting the array to contain strings? savetxt iterates on the rows, and for each row does fmt%tuple(row), where fmt is that string in the 'mismatch'. There's one %f5.2 for each of the 129 columns. Commented Aug 28, 2017 at 2:30

1 Answer 1

1

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')

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.