If I create a recarray in this way:
In [29]: np.rec.fromrecords([(1,\'hello\'),(2,\'world\')],names=[\'a\',\'b\'])
The result looks fine:>
I don't know how to ask numpy to determine for you some aspects of a dtype but not others, but couldn't you have, e.g.:
data = [(1,'hello'),(2,'world')] dlen = max(len(s) for i, s in data) st = '|S%d' % dlen np.rec.fromrecords(data, dtype=[('a',np.int8), ('b',st)])