Printing FULL contents of numpy array
本问题已经有最佳答案,请猛点这里访问。
我正在用python处理图像,我想输出一个变量,现在这个变量
1 2 3 4 5 6 7 | array([[ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], ..., [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.]]) |
如何打印出这个数组的全部内容,将其写入一个文件或一些简单的内容,这样我就可以完整地查看这些内容了?
当然,您可以更改数组的打印阈值,如在其他地方回答的那样:
1 | np.set_printoptions(threshold=np.nan) |
但根据你想看的内容,可能有更好的方法。例如,如果您的数组实际上大部分是如您所示的零,并且您想要检查它是否有非零的值,那么您可以查看如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import numpy as np import matplotlib.pyplot as plt In [1]: a = np.zeros((100,100)) In [2]: a Out[2]: array([[ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], ..., [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.]]) |
更改一些值:
1 | In [3]: a[4:19,5:20] = 1 |
看起来还是一样的:
1 2 3 4 5 6 7 8 9 | In [4]: a Out[4]: array([[ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], ..., [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.]]) |
检查一些不需要手动查看所有值的内容:
1 2 3 4 5 | In [5]: a.sum() Out[5]: 225.0 In [6]: a.mean() Out[6]: 0.022499999999999999 |
或策划:
1 2 | In [7]: plt.imshow(a) Out[7]: <matplotlib.image.AxesImage at 0x1043d4b50> |
或保存到文件:
1 | In [11]: np.savetxt('file.txt', a) |
1 2 3 4 5 6 | to_print =" ".join([",".join(row) for row in b]) print (to_print) #console f = open("path-to-file","w") f.write(to_print) #to file |
如果是numpy数组:打印完整的numpy数组