With an array you don't want to use string formatting methods.
In [175]: a = np.array([1.555, 2.559])
In [176]: a*100
Out[176]: array([ 155.5, 255.9])
In [177]: (a*100).astype(int)
Out[177]: array([155, 255])
In [178]: (a*100).astype(int)/100
Out[178]: array([ 1.55, 2.55])
Because floats are not exact, you might get a few 'wrong' results, ones where a truncated value will be off by a digit.
A small 'guard' value might be enough (if some values are negative this would have to be an array with corresponding positive negative values):
In [179]: (a*100+.01).astype(int)/100
Out[179]: array([ 1.55, 2.55])
A somewhat artificial test case for a guard value:
In [65]: a = np.array([1.555, 2.559, 1.25-1e-10])
In [66]: a
Out[66]: array([ 1.555, 2.559, 1.25 ])
In [67]: (a*100).astype(int)/100
Out[67]: array([ 1.55, 2.55, 1.24])
In [68]: (a*100+.01).astype(int)/100
Out[68]: array([ 1.55, 2.55, 1.25])