2013-04-12 40 views
8

Tôi đang làm việc với xử lý hình ảnh trong python và tôi muốn xuất ra một biến, ngay bây giờ biến b là mảng có nhiều hình dạng (200,200). Khi tôi làm print b tất cả tôi thấy là:In nội dung ĐẦY ĐỦ của mảng numpy

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.]]) 

Làm thế nào để in ra đầy đủ nội dung của mảng này, hãy viết nó vào một tập tin hoặc một cái gì đó đơn giản vì vậy tôi chỉ có thể nhìn vào các nội dung đầy đủ?

+0

chương trình đầu ra đầu tiên của 'kiểu in (b)' – dkamins

+0

chờ một giây, là nó 'numpy' mảng? – J0HN

Trả lời

0
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 

Trong trường hợp đó là mảng NumPy: Print the full numpy array

+0

Có nó là numpy.ndarray – user2275931

+0

Được rồi giúp ích rất nhiều, nhưng cấu trúc của đầu ra này là gì? mỗi [] vector là một hàng đơn phải không? – user2275931

+0

Có (ít nhất phải là :)). Hãy thử với mảng nhỏ hơn với mẫu phần tử rõ ràng, ví dụ: [[1,2,3], [4,5,6]] để hiểu cấu trúc. – J0HN

9

Tất nhiên, bạn có thể thay đổi ngưỡng in của mảng như answered elsewhere với:

np.set_printoptions(threshold=np.nan) 

Nhưng tùy thuộc vào những gì bạn đang cố gắng để nhìn vào, có lẽ có một cách tốt hơn để làm điều đó. Ví dụ, nếu mảng của bạn thực sự là chủ yếu là số không như bạn đã thể hiện, và bạn muốn kiểm tra xem nó có giá trị mà là khác không, bạn có thể nhìn vào những thứ như:

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.]]) 

Thay đổi một số giá trị:

In [3]: a[4:19,5:20] = 1 

Và nó vẫn có vẻ giống nhau:

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.]]) 

Kiểm tra một số điều mà không đòi hỏi tay xem xét tất cả các giá trị:

In [5]: a.sum() 
Out[5]: 225.0 

In [6]: a.mean() 
Out[6]: 0.022499999999999999 

Hoặc vẽ nó:

In [7]: plt.imshow(a) 
Out[7]: <matplotlib.image.AxesImage at 0x1043d4b50> 

Hoặc lưu vào một tập tin:

In [11]: np.savetxt('file.txt', a) 

array

+0

Tuyệt vời, lệnh np.savetxt chắc chắn sẽ có ích. Cảm ơn bạn. Tôi đã thử sử dụng .write nhưng nó đã kết thúc chỉ cần lưu phiên bản cắt ngắn được hiển thị ở trên. – user2275931

+0

Bạn được chào đón @ user2275931 và Chào mừng bạn đến với [SO]! Nếu điều này trả lời câu hỏi của bạn, bạn có thể nhấp vào dấu kiểm bằng câu hỏi để 'chấp nhận' câu trả lời. – askewchan

+0

@ user2275931 Tuyệt vời, cũng lưu ý rằng ['np.savetxt'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html) cũng có tất cả các tùy chọn định dạng. – askewchan

Các vấn đề liên quan