我有一个2D numpy数组,如
x = np.array([[3,3],[3,1]])
Out[107]:
array([[3, 3],
[3, 1]])
我想将其格式化为打印总数的百分比:
array([['33.3%', '33.3%'],
['33.3%', '10.0%']]
我已经尝试了here和here的一些解决方案,但还没有让这些解决方案起作用:
pct_formatter = lambda x: "{:.2%}".format(x/x.sum() * 100 )
pct_formatter(x)
TypeError: non-empty format string passed to object.__format__
另一次尝试:
with np.set_printoptions(formatter=pct_formatter):
print(pct_formatter(x))
AttributeError: __exit__
答案 0 :(得分:1)
#user a dataframe to format the numbers and then convert back to a numpy array.
pd.DataFrame(x/float(np.sum(x))).applymap(lambda x: '{:.2%}'.format(x)).values
Out[367]:
array([['30.00%', '30.00%'],
['30.00%', '10.00%']], dtype=object)