I learned from the comment in this answer Python: Numpy Data IO, how to save data by different dtype for each column? that < means byte order, U means unicode, and 5 means the number of characters.
Then what does '|' means in '|U5' and why did '|' change to '<' in the below example? The example is from NumPy official documentation: https://numpy.org/devdocs/user/basics.io.genfromtxt.html
data = u"1, abc , 2\n 3, xxx, 4"
# Without autostrip
np.genfromtxt(StringIO(data), delimiter=",", dtype="|U5")
array([['1', ' abc ', ' 2'],
['3', ' xxx', ' 4']], dtype='<U5')