我打电话的时候:
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方法是什么?
答案 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
解决方案速度更快,但这又是一个值得记住的功能。