有时会提供打印的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(r"([^[])\s+([^]])", r"\1, \2", a)
a = np.array(literal_eval(a))
关于python - 读取打印的 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23914697/