ndarray字符串操作

时间:2019-04-14 14:41:44

标签: python string numpy-ndarray

我有一个质心的ndarray(k表示算法),我想创建一个 对其进行字符串转换,将ndarray转换为特定格式的字符串 (如下所示)是否有一种优雅的方法?

我尝试使用python的join和split进行操作,但无法完全得到我想要的结果。

我想转一下:

[[0.7240662  0.64965678 0.55572689]
 [0.50786521 0.43429734 0.35474341]
 [0.04124227 0.03325809 0.04185308]
 [0.19986216 0.17889411 0.17727035]]

对此:

"[0.72, 0.64, 0.55], [0.50, 0.43, 0.35], [0.04, 0.03, 0.04], [0.19,0.17,0.17]"

2 个答案:

答案 0 :(得分:1)

您可以使用np.array2string(...)。文档页面上有一些示例。看起来像这样:

import numpy as np

x = np.random.random((3, 4))
x_str = np.array2string(x, precision=2, separator=', ').replace('\n', '')[1:-1]

print(x)
# [[0.05857399 0.44516104 0.33626309 0.45332413]
#  [0.37389644 0.50240347 0.11313364 0.10669512]
#  [0.38341254 0.52692079 0.1750295  0.44375732]]

print(x_str)
# [0.06, 0.45, 0.34, 0.45], [0.37, 0.5 , 0.11, 0.11], [0.38, 0.53, 0.18, 0.44]

答案 1 :(得分:0)

好吧,让我们一步一步走。让我们将数组称为a

>>> a
array([[0.7240662 , 0.64965678, 0.55572689],
       [0.50786521, 0.43429734, 0.35474341],
       [0.04124227, 0.03325809, 0.04185308],
       [0.19986216, 0.17889411, 0.17727035]])

str将a转换为字符串。

>>> str(a)
'[[0.7240662  0.64965678 0.55572689]\n [0.50786521 0.43429734 0.35474341]\n [0.04124227 0.03325809 0.04185308]\n [0.19986216 0.17889411 0.17727035]]'

然后,我们用切片去除第一个和最后一个括号。

>>> str(a)[1:-1]
'[0.7240662  0.64965678 0.55572689]\n [0.50786521 0.43429734 0.35474341]\n [0.04124227 0.03325809 0.04185308]\n [0.19986216 0.17889411 0.17727035]'

然后,我们使用replace将其格式化为所需的格式。

>>> str(a)[1:-1].replace('\n', ',')
'[0.7240662  0.64965678 0.55572689], [0.50786521 0.43429734 0.35474341], [0.04124227 0.03325809 0.04185308], [0.19986216 0.17889411 0.17727035]'