NumPy fromstring空字符串分隔符

4

当我调用时:

np.fromstring('3 3 3 0', sep=' ')

它返回

array([ 3.,  3.,  3.,  0.])

由于默认情况下,sep='',我希望以下调用将返回相同的结果:
np.fromstring('3330')

然而,它引发了

ValueError: string size must be a multiple of element size

这是为什么呢?从 '3330' 中获取 array([ 3., 3., 3., 0.]),最符合 Python 风格的方法是什么?


1
文档对 sep 关键字的解释如下:“如果未提供或等效地为空字符串,则数据将被解释为二进制数据。” - jme
2个回答

6
您可以使用 np.fromiter
In [11]: np.fromiter('3300', dtype=np.float64)
Out[11]: array([ 3.,  3.,  0.,  0.])

In [12]: np.fromiter('3300', dtype=np.float64, count=4)  # count=len(..)
Out[12]: array([ 3.,  3.,  0.,  0.])

0

list('3330')将字符串转换为具有4个元素的字符列表;使用正确的dtype,np.array将这些字符串转换为数字:

In [48]: np.array(list('3330'),dtype=float)
Out[48]: array([ 3.,  3.,  3.,  0.])

fromiter 的解决方案更快,但这是要记住的另一个函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接