Tôi có mã C bên dưới,
int main [void]
{
int n = 5;
printf ["%4d\n",n];
return 0;
}
Nó cho tôi đầu ra 5 dẫn đầu bởi bốn không gian.
Nhưng mã là gì nếu tôi muốn in "
printf["%4s\n", numstr];
7" với bốn không gian hàng đầu [nhưng "printf["%4s\n", numstr];
8" với ba không gian hàng đầu, hoặc "printf["%4s\n", numstr];
9" với hai không gian hàng đầu, v.v.]?Trong khi đó tôi đã thử
printf["%2$d %2$#x; %1$d %1$#x",16,17] produces 17 0x11; 16 0x10.
0 và printf["%2$d %2$#x; %1$d %1$#x",16,17] produces 17 0x11; 16 0x10.
1 nhưng những twos này đã cho printf["%2$d %2$#x; %1$d %1$#x",16,17] produces 17 0x11; 16 0x10.
2 và printf["%2$d %2$#x; %1$d %1$#x",16,17] produces 17 0x11; 16 0x10.
3 tương ứng.
Đã hỏi ngày 1 tháng 6 năm 2017 lúc 19:46Jun 1, 2017 at 19:46
3
Bạn cần phải làm điều đó trong hai bước. Đầu tiên tạo một chuỗi chứa số được bao quanh bởi dấu ngoặc đơn không có đệm:
char numstr[32];
sprintf[numstr, "[%d]", n];
Sau đó in nó trong một trường có đệm, sử dụng định dạng
printf["%2$d %2$#x; %1$d %1$#x",16,17] produces 17 0x11; 16 0x10.
4.printf["%4s\n", numstr];
Đã trả lời ngày 1 tháng 6 năm 2017 lúc 19:53Jun 1, 2017 at 19:53
BarmarbarmarBarmar
705K53 Huy hiệu vàng474 Huy hiệu bạc589 Huy hiệu đồng53 gold badges474 silver badges589 bronze badges
1
Trả lời câu hỏi của bạn.
Bạn đã in ra giá trị INT, nhóm 4 4 nói với
printf["%2$d %2$#x; %1$d %1$#x",16,17] produces 17 0x11; 16 0x10.
5 để định dạng đầu ra theo chiều dài 4 ký tự.Thông tin chi tiết hơn.
char n $: n là số lượng tham số để hiển thị bằng cách sử dụng định dạng định dạng này, cho phép các tham số được cung cấp là đầu ra nhiều lần, sử dụng các định dạng định dạng khác nhau hoặc trong các đơn đặt hàng khác nhau. Nếu bất kỳ trình giữ chỗ nào chỉ định một tham số, tất cả các phần còn lại của người giữ chỗ cũng phải chỉ định một tham số.
Ví dụ::
printf["%2$d %2$#x; %1$d %1$#x",16,17] produces 17 0x11; 16 0x10.
Để biết thêm thông tin về việc sử dụng định dạng định dạng trong C.
Đã trả lời ngày 1 tháng 6 năm 2017 lúc 19:53Jun 1, 2017 at 19:53
Barmarbarmardanglingpointer
705K53 Huy hiệu vàng474 Huy hiệu bạc589 Huy hiệu đồng3 gold badges22 silver badges41 bronze badges
Trả lời câu hỏi của bạn.
Bạn đã in ra giá trị INT, nhóm 4 4 nói với
printf["%2$d %2$#x; %1$d %1$#x",16,17] produces 17 0x11; 16 0x10.
5 để định dạng đầu ra theo chiều dài 4 ký tự.Jun 1, 2017 at 19:57
%4D có nghĩa là gì trong C?
>>> #: Our usual imports >>> import numpy as np # the Python array package >>> import matplotlib.pyplot as plt # the Python plotting package
%4D có nghĩa là gì trong C?
%4D trong lập trình C có nghĩa là chiều rộng của số được in là 4 chiều rộng không gian. Điều này được sử dụng để sắp xếp các số in.
7,2 F có nghĩa là gì trong Python?
%7.2f có nghĩa là tôi muốn tất cả các phao được in với chiều rộng 7 và với 2 chữ số sau thập phân. Lưu ý rằng sau dấu hiệu đô la, tất cả các phao có chiều rộng 7 ký tự [số thập phân là một trong 7 ký tự]. Nếu phao không có chiều rộng 7, nó được đệm với khoảng trống ở phía bên trái khi cần thiết.
>>> numbers = [1.2, 2.3, 3.4, 4.5] >>> fobj = open['some_numbers.txt', 'wt'] >>> for number in numbers: ... # String version of number, plus end-of-line character ... fobj.write[str[number] + '\n'] 4 4 4 4 >>> fobj.close[]
Đọc các tệp văn bản
>>> fobj = open['some_numbers.txt', 'rt'] >>> lines = fobj.readlines[] >>> len[lines] 4
Chúng tôi đã đọc các giá trị từ các tệp văn bản trong các bài tập.
>>> fobj = open['some_numbers.txt', 'rt'] >>> numbers_again = [] >>> for line in fobj.readlines[]: ... numbers_again.append[float[line]] >>> numbers_again [1.2, 2.3, 3.4, 4.5]
Dưới đây là một số sửa đổi về cách làm điều đó, đi từ dầu thô sang cách thanh lịch.
>>> np.loadtxt['some_numbers.txt'] array[[ 1.2, 2.3, 3.4, 4.5]]
Trước tiên tôi viết một tệp văn bản nhỏ ra đĩa:
Bây giờ tôi đọc lại nó một lần nữa. Đầu tiên, tôi sẽ đọc tất cả các dòng trong một lần bắn, trả lại một danh sách các chuỗi:
>>> import nibabel as nib
Tiếp theo tôi sẽ đọc tệp, nhưng chuyển đổi từng số thành một bản nổi:
Trong thực tế, chúng ta có thể làm điều này thậm chí chỉ đơn giản bằng cách sử dụng
printf["%2$d %2$#x; %1$d %1$#x",16,17] produces 17 0x11; 16 0x10.
6:char numstr[32];
sprintf[numstr, "[%d]", n];
0Tải dữ liệu với Nibabel¶
Nibabel cho phép chúng tôi hình ảnh
printf["%2$d %2$#x; %1$d %1$#x",16,17] produces 17 0x11; 16 0x10.
7. Đầu tiên chúng ta cần printf["%2$d %2$#x; %1$d %1$#x",16,17] produces 17 0x11; 16 0x10.
8 Thư viện Nibabel:char numstr[32];
sprintf[numstr, "[%d]", n];
1>>> #: Our usual imports >>> import numpy as np # the Python array package >>> import matplotlib.pyplot as plt # the Python plotting package4 là một loại mảng đặc biệt lưu bộ nhớ, nhưng nếu không thì hoạt động giống như bất kỳ mảng numpy nào khác.
Tôi khuyên bạn nên vô hiệu hóa việc sử dụng các mảng đặc biệt ‘MEMMAP, bằng cách sử dụng đối số từ khóa
>>> #: Our usual imports >>> import numpy as np # the Python array package >>> import matplotlib.pyplot as plt # the Python plotting package5 khi bạn tải hình ảnh.
char numstr[32];
sprintf[numstr, "[%d]", n];
2Trong trường hợp này, bạn sẽ nhận được một mảng bình thường từ
>>> #: Our usual imports >>> import numpy as np # the Python array package >>> import matplotlib.pyplot as plt # the Python plotting package6
char numstr[32];
sprintf[numstr, "[%d]", n];
3Mảng bốn chiều - Không gian + Time¶
Hình ảnh chúng tôi vừa tải là hình ảnh bốn chiều, với một mảng bốn chiều:
char numstr[32];
sprintf[numstr, "[%d]", n];
4Ba trục đầu tiên đại diện cho không gian ba chiều. Trục cuối cùng đại diện cho thời gian. Ở đây, trục [thời gian] cuối cùng có chiều dài 173. Điều này có nghĩa là, đối với mỗi trong số 173 yếu tố này, có một hình ảnh toàn bộ ba chiều. Chúng ta thường gọi các khối hình ảnh ba chiều. Vì vậy, chúng tôi có thể nói rằng hình ảnh 4D này chứa 173 tập.
Trước đây chúng tôi đã lấy lát qua trục thứ ba của hình ảnh ba chiều. Bây giờ chúng ta có thể lấy lát qua trục thứ tư của hình ảnh bốn chiều này:
char numstr[32];
sprintf[numstr, "[%d]", n];
5Cắt lát này chọn âm lượng ba chiều đầu tiên [hình ảnh 3D] từ mảng 4D:
char numstr[32];
sprintf[numstr, "[%d]", n];
6Bạn có thể sử dụng Ellipsis
>>> #: Our usual imports >>> import numpy as np # the Python array package >>> import matplotlib.pyplot as plt # the Python plotting package7 khi cắt một mảng. Ellipsis là một đoạn cắt ngắn cho tất cả mọi thứ trên các trục trước. Ví dụ, hai cái này có cùng một ý nghĩa:
char numstr[32];
sprintf[numstr, "[%d]", n];
7>>> #: Our usual imports >>> import numpy as np # the Python array package >>> import matplotlib.pyplot as plt # the Python plotting package8 là hình ảnh 3D giống như hình ảnh 3D bạn đã thấy:
char numstr[32];
sprintf[numstr, "[%d]", n];
8[PNG, Hires.png, PDF]
Các hoạt động Numpy hoạt động trên toàn bộ mảng theo mặc định
Các hoạt động Numpy như
>>> #: Our usual imports >>> import numpy as np # the Python array package >>> import matplotlib.pyplot as plt # the Python plotting package9 và
>>> numbers = [1.2, 2.3, 3.4, 4.5] >>> fobj = open['some_numbers.txt', 'wt'] >>> for number in numbers: ... # String version of number, plus end-of-line character ... fobj.write[str[number] + '\n'] 4 4 4 4 >>> fobj.close[]0 và
>>> numbers = [1.2, 2.3, 3.4, 4.5] >>> fobj = open['some_numbers.txt', 'wt'] >>> for number in numbers: ... # String version of number, plus end-of-line character ... fobj.write[str[number] + '\n'] 4 4 4 4 >>> fobj.close[]1 hoạt động trên toàn bộ mảng numpy theo mặc định, bỏ qua bất kỳ hình dạng mảng nào. Ví dụ: đây là giá trị tối đa cho toàn bộ mảng 4D:
Điều này hoàn toàn giống như:
char numstr[32];
sprintf[numstr, "[%d]", n];
9Bạn có thể yêu cầu Numpy hoạt động trên các trục cụ thể thay vì vận hành trên toàn bộ mảng. Ví dụ: điều này sẽ tạo ra hình ảnh 3D, trong đó mỗi giá trị mảng là phương sai so với 173 giá trị ở vị trí 3D đó [phương sai theo thời gian]:
printf["%4s\n", numstr];
0[PNG, Hires.png, PDF]
Các hoạt động Numpy hoạt động trên toàn bộ mảng theo mặc định
Các hoạt động Numpy như
>>> #: Our usual imports >>> import numpy as np # the Python array package >>> import matplotlib.pyplot as plt # the Python plotting package9 và
>>> numbers = [1.2, 2.3, 3.4, 4.5] >>> fobj = open['some_numbers.txt', 'wt'] >>> for number in numbers: ... # String version of number, plus end-of-line character ... fobj.write[str[number] + '\n'] 4 4 4 4 >>> fobj.close[]0 và
>>> numbers = [1.2, 2.3, 3.4, 4.5] >>> fobj = open['some_numbers.txt', 'wt'] >>> for number in numbers: ... # String version of number, plus end-of-line character ... fobj.write[str[number] + '\n'] 4 4 4 4 >>> fobj.close[]1 hoạt động trên toàn bộ mảng numpy theo mặc định, bỏ qua bất kỳ hình dạng mảng nào. Ví dụ: đây là giá trị tối đa cho toàn bộ mảng 4D:
Điều này hoàn toàn giống như:
printf["%4s\n", numstr];
1Bạn có thể yêu cầu Numpy hoạt động trên các trục cụ thể thay vì vận hành trên toàn bộ mảng. Ví dụ: điều này sẽ tạo ra hình ảnh 3D, trong đó mỗi giá trị mảng là phương sai so với 173 giá trị ở vị trí 3D đó [phương sai theo thời gian]:
printf["%4s\n", numstr];
2Lập chỉ mục với các mảng boolean
printf["%4s\n", numstr];
3Xem các bài giảng SCIPY Ghi chú trên đối tượng Mảng Numpy.
printf["%4s\n", numstr];
4Hãy nói rằng chúng tôi có một mảng như thế này:
Chúng ta có thể nhận được một mảng đúng / sai [boolean] để cho chúng ta biết liệu các giá trị này có cao hơn một số ngưỡng hay không:Brisk introduction to Python.
Chúng ta có thể sử dụng mảng Boolean này để lập chỉ mục vào mảng gốc [hoặc bất kỳ mảng nào có hình dạng phù hợp]. Điều này sẽ chỉ chọn các yếu tố trong đó mảng boolean là
>>> numbers = [1.2, 2.3, 3.4, 4.5] >>> fobj = open['some_numbers.txt', 'wt'] >>> for number in numbers: ... # String version of number, plus end-of-line character ... fobj.write[str[number] + '\n'] 4 4 4 4 >>> fobj.close[]2. Mảng được trả về có thể chỉ chọn một vài thành viên từ bất kỳ hàng hoặc cột cụ thể nào hoặc [nói chung] trục cao hơn, vì vậy nếu mặt nạ có cùng số kích thước khi mảng được lập chỉ mục, mảng được trả về luôn luôn là một chiều Phản ánh sự mất hình dạng:
Chúng tôi cũng có thể sử dụng điều này để chọn các giá trị trong hình ảnh của chúng tôi. Ví dụ: nếu chúng tôi chỉ muốn chọn các giá trị dưới 10 trong
>>> #: Our usual imports >>> import numpy as np # the Python array package >>> import matplotlib.pyplot as plt # the Python plotting package8:
Xác định chức năng Jo
printf["%4s\n", numstr];
6