关于python:打印numpy数组的全部内容

Printing FULL contents of numpy array

本问题已经有最佳答案,请猛点这里访问。

我正在用python处理图像,我想输出一个变量,现在这个变量b是一个形状为(200,200)的numpy数组。当我这样做时,我看到的只是:

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)

array


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数组