将浮点数的字符串containsg数组转换为numpy数组

时间:2019-09-10 13:13:12

标签: python-3.x numpy numpy-ndarray

我有一个浮点数数组,希望将其转换为通过JSON传输的字符串:

import numpy as np
#Create an array of float arrays
numbers = np.array([[1.0, 2.0],[3.0,4.0],[5.0,6.0]], dtype=np.float64)
print(numbers)
[[1. 2.]
 [3. 4.]
 [5. 6.]]

#Convert each row in the array to string and separate by a ','
numbers_to_string_commas = ','.join(str(number) for number in numbers)
print(numbers_to_string_commas)
[1. 2.],[3. 4.],[5. 6.]

现在,我希望将此字符串转换回原始的numpy数组。我尝试使用以下方法,但没有任何乐趣:

a = np.fromstring(numbers_to_string_commas, dtype=np.float64, sep=',')
print(a)
[]

我该怎么做?

2 个答案:

答案 0 :(得分:1)

我认为问题在于格式不是numpy期望的formats,而是如果字符串不是太大:

In [39]: eval('np.array([%s])' % '[1. 2.],[3. 4.],[5. 6.]'.replace(' ', ','))
Out[39]: 
array([[1., 2.],
       [3., 4.],
       [5., 6.]])

请注意,如果字符串很长,您可能会遇到问题: Why is there a length limit to python's eval?

答案 1 :(得分:1)

也许您可以稍微修改一下“ numbers_to_string_commas”以使重读更加容易。 这是另一种解决方案:

a=np.matrix(numbers_to_string_commas.replace(',',' ').replace('] [',';')[1:-1])
>>> a
matrix([[ 1.,  2.],
        [ 3.,  4.],
        [ 5.,  6.]])

这似乎可以满足您的要求。