2013-06-11 20 views
12

Tôi đang xem số numpy.savetxt và bị kẹt ở tùy chọn fmt.Đặt tùy chọn fmt trong numpy.savetxt

Tôi đã thử xem here và cũng là tham chiếu trong liên kết bên dưới tất cả các chữ cái có thể được sử dụng cho loại tùy chọn fmt cho tôi ý thức chung về những gì đang diễn ra.

Điều tôi không hiểu là nếu biểu tượng % là bắt buộc và trong ví dụ được đưa ra here tôi nên giải thích số 10.5 như thế nào? Nếu "f" là về thiết lập các điểm nổi, sau đó làm thế nào đến là nó 10,5 (sau đó một lần nữa, tôi có thể không biết làm thế nào các điểm nổi được thiết lập ...).

+0

10 và 5 trong% 10.5f được mô tả bằng điểm 4. và 5. trong tài liệu bạn liên kết lần đầu tiên. – Jdog

+0

Ngớ ngẩn tôi ... Cảm ơn vì điều đó! Tôi đã không nhận ra rằng những điểm đó thực sự là câu trả lời cho câu hỏi của tôi cho đến khi bạn chỉ ra chúng! Vì vậy, trường với trường hợp này chỉ là [như ở đây] (https://sites.google.com/site/mrdelaneysweb/python-field-widths). Đó là khá gọn gàng! –

Trả lời

30

Bạn có thể sử dụng tham số fmt theo nhiều cách, dưới đây là một số ví dụ.

import numpy as np 
a = np.array([[11,12,13,14], 
       [21,22,23,24]]) 

1) Thiết lập độ chính xác điểm nổi: np.savetxt('tmp.txt',a, fmt='%1.3f')

11.000 12.000 13.000 14.000 
21.000 22.000 23.000 24.000 

2) Thêm ký tự để phải biện minh.

Với không gian: np.savetxt('tmp.txt',a, fmt='% 4d')

11 12 13 14 
    21 22 23 24 

Với số không: np.savetxt('tmp.txt',a, fmt='%04d')

0011 0012 0013 0014 
0021 0022 0023 0024 

3) Thêm ký tự sang trái-biện minh (sử dụng "-").

Với không gian: np.savetxt('tmp.txt',a, fmt='%-4d')

11 12 13 14 
21 22 23 24 

Bạn cũng có thể sử dụng để viết các biểu thức, như (lưu ý rằng số lượng các mục trong biểu thức cũng giống như số cột trong mảng:

4) Ví dụ chung: np.savetxt('tmp.txt',a, fmt='%1.1f + %1.1f/(%1.1f * %1.1f)')

11.0 + 12.0/(13.0 * 14.0) 
21.0 + 22.0/(23.0 * 24.0) 
1

Điều này link có thể hữu ích.

Từ liên kết:

format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type] 
fill  ::= <any character> 
align  ::= "<" | ">" | "=" | "^" 
sign  ::= "+" | "-" | " " 
width  ::= integer 
precision ::= integer 
type  ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%" 

Width là một số nguyên thập phân xác định chiều rộng lĩnh vực tối thiểu. Nếu không được chỉ định, thì chiều rộng trường sẽ được xác định bởi nội dung.

Khi không có căn chỉnh rõ ràng nào được đưa ra, trước trường độ rộng bằng ký tự số không ('0') cho phép nhận biết không đệm cho các loại số. Điều này tương đương với ký tự fill của '0' với kiểu căn chỉnh '='.

Độ chính xác là số thập phân cho biết số lượng chữ số sẽ được hiển thị sau dấu thập phân cho giá trị dấu chấm động được định dạng bằng 'f' và 'F' hoặc trước và sau dấu thập phân cho giá trị dấu phẩy động 'g' hoặc 'G'. Đối với các loại không phải số, trường cho biết kích thước trường tối đa - nói cách khác, số lượng ký tự sẽ được sử dụng từ nội dung trường. Độ chính xác không được phép cho các giá trị số nguyên.

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