>>> arr[0,]
matrix([[0, 1, 2, 3, 4]])
>>> len(arr[0,])
1
Таким образом, arr [0,] не является списком или массивом 1-d, как вы ожидали С другой стороны, ваш метод работает для примера матрицы из учебника numpy:
>>> def f(x,y):
... return 10*x+y
...
>>> b = fromfunction(f,(5,4),dtype=int)
>>> b
array([[ 0, 1, 2, 3],
[10, 11, 12, 13],
[20, 21, 22, 23],
[30, 31, 32, 33],
[40, 41, 42, 43]])
>>> len(b[0,])
4
>>> '|'.join(map(str, b[0,]))
'0|1|2|3'
Я не знаком с NumPy, поэтому я могу сказать, почему это происходит. Еще одно наблюдение:
>>> type(arr)
<class 'numpy.matrixlib.defmatrix.matrix'>
>>> type(b)
<type 'numpy.ndarray'>