我刚学会了numpy.fromstring()是一个方便的函数:
a = ('1 2 3')
# convert to list of numbers
b = np.fromstring(a, sep=' ')
现在我修改了b
并希望将其转换回字符串列表。 numpy中是否有内置函数来执行此操作?
抱歉,我原来的问题可能不准确。我想要做的是将b
转换为与a
相同的格式。
答案 0 :(得分:3)
In [490]: a='1 2 3'
如果希望b
个元素是整数,而不是float,请指定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'
答案 1 :(得分:1)
你可以通过python本身或使用numpy来解决这个问题。
纯python解决方案:
map(str, b)
# ['1.0' '2.0' '3.0']
numpy解决方案:
list(np.char.mod('%d', b))
# ['1' '2' '3']
答案 2 :(得分:1)
列表理解解决方案:
' '.join(str(x) for x in b)
# '1.0 2.0 3.0'
或:
' '.join("%d" % x for x in b)
# '1 2 3'
答案 3 :(得分:0)
想象(可能)最简单的方法:
str(b)
:0)