numpy fromstring空字符串分隔符

时间:2014-12-18 20:07:39

标签: python string numpy

我打电话的时候:

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

这是为什么?从[{1}}获取array([ 3., 3., 3., 0.])的最佳pythonic方法是什么?

2 个答案:

答案 0 :(得分:4)

您可以使用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.])

答案 1 :(得分:0)

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

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

fromiter解决方案速度更快,但这又是一个值得记住的功能。