如何打印没有换行符的numpy对象

时间:2015-03-17 15:21:09

标签: python logging numpy

我正在使用

将输入参数记录到函数中
logging.debug('Input to this function = %s',
              inspect.getargvalues(inspect.currentframe())[3])

但我不希望在numpy对象中插入换行符。 numpy.set_printoptions(linewidth=np.nan)删除了一些,但换行符仍然插入到2D对象中,例如

array([[ 0.84148239,  0.71467895,  0.00946744,  0.3471317 ],
       [ 0.68041249,  0.20310698,  0.89486761,  0.97799646],
       [ 0.22328803,  0.32401271,  0.96479887,  0.43404245]])

我希望它是这样的:

array([[ 0.84148239,  0.71467895,  0.00946744,  0.3471317 ], [ 0.68041249,  0.20310698,  0.89486761,  0.97799646], [ 0.22328803,  0.32401271,  0.96479887,  0.43404245]])

我该怎么做?感谢。

2 个答案:

答案 0 :(得分:7)

给定一个数组x,您可以打印它而不用换行符,

import numpy as np
x_str = np.array_repr(x).replace('\n', '')
print(x_str)

或者使用函数np.array2string代替np.array_repr

我不确定是否有一种简单的方法可以从字符串表示或numpy数组中删除换行符。但是,转换发生后始终可以删除它们,

input_args = inspect.getargvalues(inspect.currentframe())[3]
logging.debug('Input to this function = %s', repr(input_args).replace('\n', ''))

答案 1 :(得分:0)

简单的解决方案

import numpy as np
value = np.array([[1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 3, 7, 8]])

value_str = str(value).replace('\n', '')  

print("prints: " + value_str)
# prints: [[1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 3, 7, 8]]