格式化2D Numpy Array Float - >百分比

时间:2017-05-16 04:17:26

标签: python numpy string-formatting

我有一个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%']]

我已经尝试了herehere的一些解决方案,但还没有让这些解决方案起作用:

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__

1 个答案:

答案 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)