Skip to main content
 首页 » 编程设计

python之是否有内置函数来执行 numpy.fromstring 的反向操作

2025年05月04日31oomusou

我刚刚了解到 numpy.fromstring() 是一个方便的函数:

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

现在我修改了 b 并想将它转换回字符串列表。 numpy 中是否有内置函数可以执行此操作?

抱歉,我原来的问题可能不准确。我想做的是将 b 转换成与 a 相同的格式。

请您参考如下方法:

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'