如何在numpy中连接字符串(以创建百分比)?

时间:2016-09-23 06:42:23

标签: python numpy

我有一个由以下代码创建的矩阵:

import numpy as np
table_vals = np.random.randn(4,4).round(4) * 100

我尝试将数字转换为这样的百分比:

>>> table_vals.astype(np.string_) + '%'
TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('<U32') dtype('<U32') dtype('<U32')

并且像这样:

>>> np.str(table_vals) + '%'
"[[ 137.08 120.31 -55.73 43.6 ]\n [ -94.35 -105.27 -23.31 59.16]\n [-132.9 12.04 -36.69 106.52]\n [ 126.11 -91.38 -29.16 -138.01]]%"

但他们都失败了。那我该怎么办?

2 个答案:

答案 0 :(得分:0)

您可以将格式设置为:

[["%.2f%%" % number for number in row] for row in table_vals]

如果你想把它作为一个numpy数组,那么将它包装在np.array方法中,它就变成了:

np.array([["%.2f%%" % number for number in row] for row in table_vals])

答案 1 :(得分:0)

np.char module可以在这里提供帮助:

np.char.add(table_vals.astype(np.bytes_), b'%')

使用对象数组也很有效:

np.array("%.2f%%") % table_vals.astype(np.object_)