2016-09-23 14 views
0

私は次のコードで作成された行列があります。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]]%" 

しかしすべてが失敗しました。だから何をすべきか?

あなたに書式設定を使用することができます

答えて

0

:あなたがnumpyの配列としてそれをしたい場合は、なるように、その後、np.array方法でそれをラップ

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

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

ありがとうございます〜 – DachuanZhao

0

np.char moduleはここに助けることができます。

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

オブジェクト配列を使用するとうまくいく:

np.array("%.2f%%") % table_vals.astype(np.object_) 
関連する問題