python-numpy数组上的str()方法并返回
作者:互联网
应用str()方法后,是否有任何内置方法可以返回numpy数组,例如,
import numpy as np
a = np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6]])
a_str = str(a)
#to get back a?
a = some_method(a_str).
以下两种方法不起作用:
from ast import literal_eval
a = literal_eval(a_str) # Error
import numpy as np
a = np.fromstring(a_str) # Error
更新1:
不幸的是,我已经用str()方法转换了很大的数据,所以我不打算用其他方法重新转换它.
解决方法:
主要问题似乎是分隔符和换行符.您可以使用np.array2string
和str.splitlines
来解决它们:
import numpy as np
from ast import literal_eval
a = np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6]])
a_str = ''.join(np.array2string(a, separator=',').splitlines())
# '[[ 1.1, 2.2, 3.3], [ 4.4, 5.5, 6.6]]'
b = np.array(literal_eval(a_str))
# array([[ 1.1, 2.2, 3.3],
# [ 4.4, 5.5, 6.6]])
请注意,没有任何参数,np.array2string的行为类似于str.
如果字符串是给定且不可避免的,则可以使用以下hacky方法:
a_str = str(a)
res = np.array(literal_eval(''.join(a_str.replace('\n', ' ').replace(' ', ','))))
array([[ 1.1, 2.2, 3.3],
[ 4.4, 5.5, 6.6]])
根据@hpaulj的评论,np.array2string的一个好处是可以指定阈值.例如,考虑x = np.arange(10000)的字符串表示形式.
> str(x)将返回省略号,例如'[0 1 2 …,9997 9998 9999]’
> np.array2string(x,threshold = 11e3)将返回完整的字符串
标签:string-literals,arrays,string,python,numpy 来源: https://codeday.me/bug/20191108/2009141.html