eme*_*eth 5 python arrays numpy
有时numpy提供打印的数组来共享数据,例如这篇文章.到目前为止,我手动转换了它.但是帖子中的数组太大而无法手工转换.
我想将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.]]
Run Code Online (Sandbox Code Playgroud)
但是,这不能保留数据类型.如果ndim > 3,它不能正常工作.
[[[0 1]
[2 3]]]
Run Code Online (Sandbox Code Playgroud)
被解释为
[[ 0. 1.]
[ 2. 3.]]
Run Code Online (Sandbox Code Playgroud)
您可以使用re来处理字符串,然后使用eval()以下方法创建数组:
import re
from ast import literal_eval
import numpy as np
a = """[[[ 0 1]
[ 2 3]]]"""
a = re.sub(r"([^[])\s+([^]])", r"\1, \2", a)
a = np.array(literal_eval(a))
Run Code Online (Sandbox Code Playgroud)