you can use np.nditer to achieve this for multidimensional arrays
let
my_multidimensional_array = np.ones((3,3,3)) * 0.000095
my_multidimensional_array
Out[105]:
array([[[0.000095, 0.000095, 0.000095],
[0.000095, 0.000095, 0.000095],
[0.000095, 0.000095, 0.000095]],
[[0.000095, 0.000095, 0.000095],
[0.000095, 0.000095, 0.000095],
[0.000095, 0.000095, 0.000095]],
[[0.000095, 0.000095, 0.000095],
[0.000095, 0.000095, 0.000095],
[0.000095, 0.000095, 0.000095]]])
def np_to_string(my_multidimensional_array):
result = my_multidimensional_array.copy().astype(str)
with np.nditer(result, op_flags=['readwrite']) as it:
for x in it:
x[...] = np.format_float_positional(float(x))
return result
And it works!
print(np_to_string(my_multidimensional_array))
[[['0.000095' '0.000095' '0.000095']
['0.000095' '0.000095' '0.000095']
['0.000095' '0.000095' '0.000095']]
[['0.000095' '0.000095' '0.000095']
['0.000095' '0.000095' '0.000095']
['0.000095' '0.000095' '0.000095']]
[['0.000095' '0.000095' '0.000095']
['0.000095' '0.000095' '0.000095']
['0.000095' '0.000095' '0.000095']]]