As I'm looking into fixing a number of bugs in chararray, I'm running into some surprising behavior. One of the things chararray needs to do occasionally is build up an object array of string objects, and then convert that back to a fixed-length string array. This length is sometimes predetermined by a recarray data structure. Unfortunately, I'm not getting what I would expect when coercing or assigning an object array to a string array. Is this a bug, or am I just going about this the wrong way? If a bug, I'm happy to look into it as part of my "fixing chararray" task, but I just wanted to confirm that it is a bug before proceeding.
In [14]: x = np.array(['abcdefgh', 'ijklmnop'], 'O') # Without specifying the length, it seems to default to sizeof(int)... ??? In [15]: np.array(x, 'S') Out[15]: array(['abcd', 'ijkl'], dtype='|S4') In [21]: np.array(x, np.string_) Out[21]: array(['abcd', 'ijkl'], dtype='|S4') # Specifying a length gives strange results In [16]: np.array(x, 'S8') Out[16]: array(['abcdijkl', 'mnop\xe0\x01\x85\x08'], dtype='|S8') # This is what I expected to happen above, but the cast to a list seems like it should be unnecessary In [17]: np.array(list(x)) Out[17]: array(['abcdefgh', 'ijklmnop'], dtype='|S8') # Assignment also seems broken In [18]: y = np.empty(x.shape, dtype='S8') In [19]: y[:] = x[:] In [20]: y Out[20]: array(['abcdijkl', 'mnop\xc05\xf9\xb7'], dtype='|S8') Cheers, Mike _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion