python - 读取打印的 numpy 数组

标签 python arrays 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(r"([^[])\s+([^]])", r"\1, \2", a)
 a = np.array(literal_eval(a))

关于python - 读取打印的 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23914697/

相关文章:

python - 将一维点列表转换为二维 np 数组

python - 在列表列表中的两个列表之间查找公共(public)元素的最快方法

python - 如何在 replit 上运行音乐机器人 (discord.py)

javascript - 使用重置按钮重置表上的数据

java - 如何制作二维数组并打印它们

python - 为什么我不断收到此错误 'RuntimeWarning: overflow encountered in int_scalars'

python - ChatGPT 词嵌入最相似的词

python - 如何连接两个pandas数据框

arrays - Swift:过滤对象数组的数组

python - 意外的小数位数和语法查询