2016-11-26 36 views
1

我剛剛得知numpy.fromstring()是一個方便的功能:是否有一個內置的函數來做numpy.fromstring的反轉操作?

a = ('1 2 3') 
# convert to list of numbers 
b = np.fromstring(a, sep=' ') 

現在我修改了b並希望將其轉換回字符串列表。 numpy中有內置函數嗎?

對不起,我原來的問題可能不準確。我想要做的是將b轉換爲與a相同的格式。

+0

'np.fromstring(['1','2','3'])'似乎不起作用。 – Divakar

回答

3
In [490]: a='1 2 3' 

如果你想b元素是整數,而不是浮動,指定dtype

In [491]: b=np.fromstring(a, sep=' ',dtype=int) 
In [492]: b 
Out[492]: array([1, 2, 3]) 
In [493]: b += 2   # typical array math 
In [494]: b 
Out[494]: array([3, 4, 5]) 

正常的數組顯示字符串,通過print或str。請注意,數組str省略了逗號;這只是一個區別於列表的視覺線索。

In [495]: print(b) 
[3 4 5] 
In [496]: str(b) 
Out[496]: '[3 4 5]' 

我們可以脫光[]得到一個顯示像a

In [497]: str(b)[1:-1] 
Out[497]: '3 4 5' 

' '.join是一個很好的列表格式招:

In [500]: [str(i) for i in b] 
Out[500]: ['3', '4', '5'] 
In [501]: ' '.join([str(i) for i in b]) 
Out[501]: '3 4 5' 

,我們可以很容易地分裂a成字符串列表,修改它們並重新加入

In [506]: a1=a.split() 
In [508]: a1 
Out[508]: ['1', '2', '3'] 
In [509]: a1[1]='34' 
In [510]: a1 
Out[510]: ['1', '34', '3'] 
In [511]: ' '.join(a1) 
Out[511]: '1 34 3' 
+0

此答案准確而全面!對此,我真的非常感激! – user3768495

1

根據這些答案ans.1 & ans.2

您可以通過Python本身或使用numpy的解決這個問題。

純Python解決方案:

map(str, b) 
# ['1.0' '2.0' '3.0'] 

numpy的解決方案:

list(np.char.mod('%d', b)) 
# ['1' '2' '3'] 
0

只是想出(可能)最簡單的方法:

str(b)

:0)

1

列表理解的解決方案:

' '.join(str(x) for x in b) 
# '1.0 2.0 3.0' 

或:

' '.join("%d" % x for x in b) 
# '1 2 3' 
相關問題