Замечу, что в документации сказано, что np.fromstring()
"Вернуть новый 1-D массив, инициализированный из необработанных двоичных или текстовых данных в строку."
Если вы знаете размеры ваш массив, один простой обходной путь для факта, что ваши данные 2D, будет просто:
str_array = str_array.replace("]", "")
str_array = str_array.replace("[", "")
np.fromstring(str_array, sep=' ').reshape(3,3)
, который дает:
array([[0.1233, 0.333 , 4.1111],
[0.1233, 0.333 , 4.1111],
[0.1233, 0.333 , 4.1111]])