python – 读取打印的numpy数组

有时提供打印的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))

相关文章

我最近重新拾起了计算机视觉,借助Python的opencv还有face_r...
说到Pooling,相信学习过CNN的朋友们都不会感到陌生。Poolin...
记得大一学Python的时候,有一个题目是判断一个数是否是复数...
文章目录 3 直方图Histogramplot1. 基本直方图的绘制 Basic ...
文章目录 5 小提琴图Violinplot1. 基础小提琴图绘制 Basic v...
文章目录 4 核密度图Densityplot1. 基础核密度图绘制 Basic ...