Một thứ không thể tách rời khi chúng ta lập trình đó là ma trận. Đối với ứng dụng đơn giản, dữ liệu của chúng tôi có thể chỉ bao gồm 1 hàng hoặc 1 cột, vì vậy chúng tôi không coi đó là ma trận. Tuy nhiên, khi chúng tôi cần xử lý quá nhiều dữ liệu, chúng tôi cần xử lý những dữ liệu đó trong ma trận MxN hoặc NxN. Chúng ta có thể xử lý nó theo cách truyền thống bằng python. Thông thường mọi người sẽ tạo nó dưới dạng danh sách bên trong danh sách. Hoặc cách nhanh nhất là sử dụng Numpy từ thư viện Scipy. Nên sử dụng Numpy đặc biệt khi bạn cần hiển thị kết quả ở dạng ma trận. Mặt khác, nếu dữ liệu của bạn rất lớn, Numpy sẽ chỉ hiển thị dưới dạng 3 dữ liệu đầu tiên và 3 dữ liệu cuối cùng
Đầu tiên chúng ta cần xem xét hàng và cột vì nó. [nguồn ảnh]
Hàng là tất cả dữ liệu theo hàng ngang, khi cột ở hàng dọc. Vì vậy, hàng đầu tiên [hàng=0] bao gồm
[[0,0,0],[0,0,0],[0,0,0]]2, hàng ở giữa [hàng=1] là
[[0,0,0],[0,0,0],[0,0,0]]3 và hàng cuối cùng [hàng=2] là
[[0,0,0],[0,0,0],[0,0,0]]4. Lưu ý rằng việc đánh số trong lập trình bắt đầu bằng 0 ngay cả khi đó là hàng đầu tiên. Sau đó, đối với mỗi cột, bạn sẽ có
[[0,0,0],[0,0,0],[0,0,0]]5,
[[0,0,0],[0,0,0],[0,0,0]]6 và
[[0,0,0],[0,0,0],[0,0,0]]7
Ma trận sử dụng danh sách python
Tạo ma trận vuông ban đầu sẽ dễ hiểu hơn. Giả sử bạn muốn tạo ma trận NxN có chỉ số
[[0,0,0],[0,0,0],[0,0,0]]8 [có 3 số hàng và 3 số cột]
matrix=[] #define empty matrix row=[] #Mistake position for i in xrange[3]: #total row is 3 row=[] #Credits for Hassan Tariq for noticing it missing for j in xrange[3]: #total column is 3 row.append[0] #adding 0 value for each column for this row matrix.append[row] #add fully defined column into the row print matrix
Bạn có thể xem chi tiết trong từng dòng. Mã này sẽ dẫn đến
[[0,0,0],[0,0,0],[0,0,0]]
Với tất cả dữ liệu bằng không. Bạn có thể sửa đổi nó theo ý muốn, chẳng hạn như thay đổi 0 thành i thì nó trở thành
[[1,1,1],[2,2,2],[3,3,3]]
hoặc thay đổi 0 thành j để nó được
[[1,2,3],[1,2,3],[1,2,3]]
Tuy nhiên, nếu bạn muốn kết quả được ghi trong một tệp, việc chuyển đổi từng hàng và cột sẽ khó khăn
Sau đó, làm thế nào để làm cho nó ma trận MxN?
for i in xrange[3]: for j in xrange[2]:
và điều này sẽ cung cấp cho bạn
[[0,0],[0,0],[0,0]]
Ma trận sử dụng Numpy
Numpy đã có sẵn mảng. Đó không phải là cách tiếp cận quá khác để viết ma trận, nhưng có vẻ thuận tiện. Nếu bạn muốn tạo ma trận bằng 0 với tổng số hàng và cột i, chỉ cần viết
import numpy i = 3 a = numpy.zeros[shape=[i,i]]
Và nếu bạn muốn thay đổi dữ liệu tương ứng chẳng hạn
for i in xrange[3]: a[0][i] = i+1 a[i][0] = i+1
nó sẽ cho bạn
[[1 2 3] [2 0 0] [3 0 0]]
Kết quả hiển thị dưới dạng mảng nên bạn dễ dàng quan sát ma trận. Tuy nhiên, trong trường hợp dữ liệu của bạn quá lớn [tôi. e. 100]
Viết chương trình Python để in một ma trận số N x M đã cho theo từng dòng tiến > lùi > tiến >. gọi món
Ma trận đầu vào
[[1, 2, 3, 4],
[5, 6, 7, 8],
[0, 6, 2, 8],
[2, 3, 0, 2]]
đầu ra
1
2
3
4
8
7
6
5
0
6
2
8
2
0
3
2
Giải pháp mẫu
Mã Python
def print_matrix[nums]:
flag = True
for line in nums:
if flag == True:
i = 0
while i < len[line]:
print[line[i]]
i += 1
flag = False
else:
i = -1
while i > -1 * len[line] - 1:
print[line[i]]
i = i - 1
flag = True
print_matrix[[[1, 2, 3, 4],
[5, 6, 7, 8],
[0, 6, 2, 8],
[2, 3, 0, 2]]]
Đầu ra mẫu
1 2 3 4 8 7 6 5 0 6 2 8 2 0 3 2
Sơ đồ
Trình chỉnh sửa mã Python
Có một cách khác để giải quyết giải pháp này?
Trước. Viết chương trình Python để tìm lợi nhuận tối đa trong một giao dịch
Kế tiếp. Viết chương trình Python để tính tích lớn nhất của ba số nguyên từ một danh sách các số nguyên đã cho
Mức độ khó của bài tập này là gì?
Kiểm tra kỹ năng Lập trình của bạn với bài kiểm tra của w3resource
Theo dõi chúng tôi trên Facebook và Twitter để cập nhật thông tin mới nhất.
con trăn. Lời khuyên trong ngày
Tuyên bố chuyển nhượng được chú thích
Điều này có vẻ không ấn tượng bằng một số thủ thuật khác nhưng đó là một cú pháp mới được đưa vào Python trong những năm gần đây và bạn nên biết
Các bài tập được chú thích cho phép người viết mã để lại các gợi ý về loại trong mã. Những điều này không có bất kỳ quyền lực thực thi nào ít nhất là chưa. Thật tuyệt khi có thể ngụ ý một số gợi ý về loại và chắc chắn cung cấp nhiều tùy chọn hơn là chỉ có thể nhận xét về các loại biến dự kiến