use*_*931 11 python printing numpy
我在python中处理图像处理,我想输出一个变量,现在变量b是一个带有形状的numpy数组(200,200).当我做print b所有事情时,我看到的是:
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.]])
Run Code Online (Sandbox Code Playgroud)
如何打印出该数组的全部内容,将其写入文件或简单的内容,以便我可以完整地查看内容?
ask*_*han 12
当然,你可以改变作为阵列的打印阈其他地方回答有:
np.set_printoptions(threshold=np.nan)
Run Code Online (Sandbox Code Playgroud)
但是根据你想要看的东西,可能有更好的方法.例如,如果你的数组真的大部分是你所显示的零,并且你想检查它是否具有非零值,你可能会看到如下内容:
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.]])
Run Code Online (Sandbox Code Playgroud)
更改一些值:
In [3]: a[4:19,5:20] = 1
Run Code Online (Sandbox Code Playgroud)
它看起来仍然一样:
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.]])
Run Code Online (Sandbox Code Playgroud)
检查一些不需要手动查看所有值的内容:
In [5]: a.sum()
Out[5]: 225.0
In [6]: a.mean()
Out[6]: 0.022499999999999999
Run Code Online (Sandbox Code Playgroud)
或绘制它:
In [7]: plt.imshow(a)
Out[7]: <matplotlib.image.AxesImage at 0x1043d4b50>
Run Code Online (Sandbox Code Playgroud)
或保存到文件:
In [11]: np.savetxt('file.txt', a)
Run Code Online (Sandbox Code Playgroud)

to_print = "\n".join([", ".join(row) for row in b])
print (to_print) #console
f = open("path-to-file", "w")
f.write(to_print) #to file
Run Code Online (Sandbox Code Playgroud)
如果它是 numpy 数组:打印完整的 numpy 数组