1

假设我有以下字符串。

 irb(main):074:0> line = "#!/usr/bin/ruby\n#\n#  Gen"
 irb(main):078:0> NArray.to_na(line,Float)
 => NArray.float(3): 
 [ 9.05457e+164, 3.30198e-258, 6.1531e+223 ]

如何使用 numpy.array 在 Python 中模仿这种行为?

我尝试了以下方法,但没有奏效。

>>> line = '#!/usr/bin/ruby\n#\n#  Gen'
>>> np.array(line,float)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: #!/usr/bin/ruby
#
#  Gen

然后我尝试将其转换为字节,但这也不起作用。

>>> bytes = bytearray(line, 'utf-8')
>>> np.array(bytes,float)
array([  35.,   33.,   47.,  117.,  115.,  114.,   47.,   98.,  105.,
        110.,   47.,  114.,  117.,   98.,  121.,   10.,   35.,   10.,
         35.,   32.,   32.,   71.,  101.,  110.])

我该如何解决这个问题?

4

1 回答 1

2

fromstring您可以通过使用numpy的方法轻松实现这一点:

import numpy as np

line = "#!/usr/bin/ruby\n#\n#  Gen"
array = np.fromstring(line, dtype=float)
print array

执行上面的代码会导致

[  9.05457127e+164   3.30197767e-258   6.15310337e+223]
于 2013-10-01T18:09:59.210 回答