有时提供打印的numpy数组来共享数据,例如
this post.到目前为止,我手动转换了它.但是帖子中的数组太大而无法手工转换.
我想将numpy数组的字符串表示形式转换回数组. (谢谢,@ LevLevitsky.我引用你的表达.)
我试过这段代码
import numpy as np print np.array([[0,1],[2,3]]) #[[0 1] # [2 3]] # the output is output = '''[[0 1] [2 3]]''' import re pat_ignore = re.compile(r'[\[\]]') numbers = pat_ignore.sub('',output) print np.array([map(float,line.split()) for line in numbers.splitlines()]) [[ 0. 1.] [ 2. 3.]]
但是,这不能保留数据类型.如果ndim> 3,它无法正常工作.
[[[0 1] [2 3]]]
被解释为
[[ 0. 1.] [ 2. 3.]]
解决方法
您可以使用re来处理字符串,然后使用eval()创建数组:
import re from ast import literal_eval import numpy as np a = """[[[0 1] [2 3]]]""" a = re.sub('\s+',',a) a = np.array(literal_eval(a))