Python编程:如何规范numpy中数组元素的打印输出格式


引言

对于Python语言开发者,如果你经常处理大量数据运算的话,numpy是一个必不可少的程序扩展库,它支持大维度数组与矩阵运算,提供了非常丰富的数学运算函数,并且,相对于Python自身提供的列表类型,它在运算速度上有着无与伦比的优势。

在代码调试过程中,我们经常会使用print函数打印查看numpy数组元素的运算结果,那么如何规范或者自定义这种数组的输出格式呢?

函数set_printoptions原型

numpy库中提供了一个函数set_printoptions,通过这个函数可对打印结果进行各种设置。

其函数原型如下图所示:

Python编程:如何规范numpy中数组元素的打印输出格式


从这个函数的参数可看出,通过这个函数可对数组元素的输出精度、元素个数门限值、是否压缩科学计数法表示等等进行设置,甚至也可以通过formatter参数进行数组元素的完全自定义显示。

下面通过例子简单介绍数组元素输出格式的几种常用设置方法。

例1:设置数组精度

如对于数组a = [3.1415926, 1.2, 5.0],要求小数点后保留3位小数,程序代码如下:

Python编程:如何规范numpy中数组元素的打印输出格式


代码中提供了两种方式,一种是设置precision参数值为3,但这种方法当末尾为0时会自动省略掉。

另一种方法是使用formatter参数进行自定义设置,该参数是一个字典类型,本例中设置float类型的元素其显示格式强制为3位小数,此时为末尾为0时不会舍去,符合题目要求。

例2:设置打印元素的个数

如对于数组包含0-19共20个元素的数组b,可通过参数threshold的值设置打印元素的个数,程序代码如下:

Python编程:如何规范numpy中数组元素的打印输出格式


参数threshold值的意义是,当元素个数大于该值时,会省略显示,只显示两头的数据,中间用省略号代替。

如上面代码中,当threshold值设置为10时,只打印了前后各3个元素的数值。

如果将threshold的值设置为np.nan时, 则无论数组中包含多少元素,都要打印所有的元素值。

例3:设置是否以科学计数法表示

如对于数组c = [1.5e-10, 1.5, 1500],通过设置参数suppress的值,可修改数组元素中的值是否以科学计数法表示,程序代码如下:

Python编程:如何规范numpy中数组元素的打印输出格式


上面代码中当suppress值设为True时,说明为压缩方式,即不以科学计数法表示。

例4:完全自定义显示

如对于包含5个值为0-1之间的随机数的数组d,根据元素的值打印不同的信息,本例中当值大于0.5时打印“+1”,否则打印“-1”,程序代码如下:

Python编程:如何规范numpy中数组元素的打印输出格式


上面代码中使用formatter参数实现元素输出格式的完全自定义形式,本例字典参数中’all’表明对于所有数据类型的元素,使用lamda表达式判断其输出值,分别输出“+1”和“-1”的值。

总结

本文仅演示了函数set_printoptions中几个常用参数的设置方法,如果还有其它的设置需求(如省略打印时设置两头打印的元素个数等),大家可参考其帮助文档,进行对应的设置即可。

本文由编码那些事原创,请 关注 + 转发 + 收藏 + 点赞 ,带你一起长知识!