当前位置: 首页 > 面试题库 >

如何在没有科学符号和给定精度的情况下漂亮地打印numpy.array?

锺离穆冉
2023-03-14
问题内容

我很好奇,是否有任何打印格式化的方法numpy.arrays,例如,类似于以下方式:

x = 1.23456
print '%.3f' % x

如果我想打印numpy.array浮点数,它会以“科学”格式打印几位小数,即使对于低维数组也很难阅读。但是,numpy.array显然必须将其打印为html" target="_blank">字符串,即使用%s。有解决方案吗?


问题答案:

你可以set_printoptions用来设置输出的精度:

import numpy as np
x=np.random.random(10)
print(x)
# [ 0.07837821  0.48002108  0.41274116  0.82993414  0.77610352  0.1023732
#   0.51303098  0.4617183   0.33487207  0.71162095]

np.set_printoptions(precision=3)
print(x)
# [ 0.078  0.48   0.413  0.83   0.776  0.102  0.513  0.462  0.335  0.712]

suppress禁止对小数使用科学计数法:

y=np.array([1.5e-10,1.5,1500])
print(y)
# [  1.500e-10   1.500e+00   1.500e+03]
np.set_printoptions(suppress=True)
print(y)
# [    0.      1.5  1500. ]

有关其他选项,请参见文档中的set_printoptions

要使用NumPy 1.15.0或更高版本在本地应用打印选项,可以使用numpy.printoptions上下文管理器。例如,在with-suite precision=3suppress=True内设置:

x = np.random.random(10)
with np.printoptions(precision=3, suppress=True):
    print(x)
    # [ 0.073  0.461  0.689  0.754  0.624  0.901  0.049  0.582  0.557  0.348]

但是在with-suite打印选项之外,将恢复为默认设置:

print(x)    
# [ 0.07334334  0.46132615  0.68935231  0.75379645  0.62424021  0.90115836
#   0.04879837  0.58207504  0.55694118  0.34768638]

如果你使用的是NumPy的早期版本,则可以自己创建上下文管理器。例如,

import numpy as np
import contextlib

@contextlib.contextmanager
def printoptions(*args, **kwargs):
    original = np.get_printoptions()
    np.set_printoptions(*args, **kwargs)
    try:
        yield
    finally: 
        np.set_printoptions(**original)

x = np.random.random(10)
with printoptions(precision=3, suppress=True):
    print(x)
    # [ 0.073  0.461  0.689  0.754  0.624  0.901  0.049  0.582  0.557  0.348]

为防止浮点数结尾处的零被剥离:

np.set_printoptions现在有一个formatter参数,可让你为每种类型指定格式功能。

np.set_printoptions(formatter={'float': '{: 0.3f}'.format})
print(x)

哪个打印

[ 0.078  0.480  0.413  0.830  0.776  0.102  0.513  0.462  0.335  0.712]

代替

[ 0.078  0.48   0.413  0.83   0.776  0.102  0.513  0.462  0.335  0.712]


 类似资料:
  • 问题内容: 我想在Java中打印双精度值而不使用指数形式。 它显示此E表示法:。 我希望它像这样打印它: 防止这种情况的最佳方法是什么? 问题答案: 你可以使用同: 这将打印。如果你不想要小数部分,请使用 这使用了文档中说明的格式说明符语言。

  • 问题内容: Go中有类似Ruby的东西吗? 例如,在Ruby中,您可以编写: 输出将是: 我能找到的最接近的东西是 问题答案: 如果您的目标是避免导入第三方软件包,则另一个选择是使用json.MarshalIndent: 输出: 工作示例:http : //play.golang.org/p/SNdn7DsBjy

  • 问题内容: 我试图使我的数据集与此示例相对应: 我有一个名称和与那些名称可以引用的特定实体相对应的唯一字母数字值,我们将这些条目称为“ ID”。 因此,例如,可能与ID有关,因为这是一个非常具体的参考,因此没有很多广为人知的具有该名称的图形。然而,可能被附加到,和,引用也许是男人,啤酒和灌木,没有特定的顺序。 看起来像这样(实际的更大): 使用杰克逊,我这样尝试: 但这似乎是错误的,因为我的输出全

  • 问题内容: 有人知道在Go中漂亮地打印JSON输出的简单方法吗? 库存的 http://golang.org/pkg/encoding/json/ 软件包似乎不包含此功能 (编辑:确实如此,请参见接受的答案),而且快速的Google并没有发现任何明显的问题。 我正在寻找的用途既可以打印出JSON 的结果,又可以从任何地方格式化一个充满JSON的字符串,因此出于调试目的而更易于阅读。 问题答案: 通

  • 问题内容: 如何在Python中打印深度约为4的字典?我尝试使用进行漂亮的打印,但是没有用: 我只是想为每个嵌套添加一个缩进(),以便获得如下内容: 等等 我怎样才能做到这一点? 问题答案: 我不确定您希望格式看起来如何,但是可以从这样的函数开始:

  • 问题内容: 这似乎是一个已解决的问题,但我无法找到解决方案。 基本上,我读取了一个JSON文件,更改了密钥,然后将新的JSON写回到同一文件。都可以,但是我松了JSON格式,所以,而不是: 我懂了 Node.js中是否可以将格式良好的JSON写入文件? 问题答案: 的第三个参数定义用于漂亮打印的空白插入。它可以是字符串或数字(空格数)。Node可以使用写入您的文件系统。例: 请参阅MDN上的JSO