def _unconvert_string_array(data, nan_rep=None, encoding=None,<EOL>errors='<STR_LIT:strict>'):
shape = data.shape<EOL>data = np.asarray(data.ravel(), dtype=object)<EOL>encoding = _ensure_encoding(encoding)<EOL>if encoding is not None and len(data):<EOL><INDENT>itemsize = libwriters.max_len_string_array(ensure_object(data))<EOL>dtype = "<STR_LIT>".format(itemsize)<EOL>if isinstance(data[<NUM_LIT:0>], bytes):<EOL><INDENT>data = Series(data).str.decode(encoding, errors=errors).values<EOL><DEDENT>else:<EOL><INDENT>data = data.astype(dtype, copy=False).astype(object, copy=False)<EOL><DEDENT><DEDENT>if nan_rep is None:<EOL><INDENT>nan_rep = '<STR_LIT>'<EOL><DEDENT>data = libwriters.string_array_replace_from_nan_rep(data, nan_rep)<EOL>return data.reshape(shape)<EOL>
inverse of _convert_string_array

Parameters
----------
data : fixed length string dtyped array
nan_rep : the storage repr of NaN, optional
encoding : the encoding of the data, optional
errors : handler for encoding errors, default 'strict'

Returns
-------
an object array of the decoded data