Hướng dẫn how to read a matrix from a text file in python - cách đọc ma trận từ tệp văn bản trong python

Tôi có một tệp văn bản chứa ma trận kích thước n * m.

Ví dụ: tệp input.txt chứa các mục sau:

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,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,2,1,0,2,0,0,0,0
0,0,2,1,1,2,2,0,0,1
0,0,1,2,2,1,1,0,0,2
1,0,1,1,1,2,1,0,2,1

Tôi cần viết tập lệnh Python trong đó tôi có thể nhập ma trận.

Kịch bản Python hiện tại của tôi là:

f = open [ 'input.txt' , 'r']
l = []
l = [ line.split[] for line in f]
print l

Danh sách đầu ra đến như thế này

[['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,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,2,1,0,2,0,0,0,0'], ['0,0,2,1,1,2,2,0,0,1'], ['0,0,1,2,2,1,1,0,0,2'],
 ['1,0,1,1,1,2,1,0,2,1']]

Tôi cần lấy các giá trị ở dạng int. Nếu tôi cố gắng gõ diễn viên, nó ném lỗi.

Một kỹ sư và nhà văn chuyên nghiệp giúp mọi người tìm ra những cách sáng tạo để giải quyết các vấn đề hàng ngày.

Bản quyền © Ali Khan [tác giả]

Bài viết này sẽ cung cấp cho bạn một hướng dẫn chi tiết về cách bạn có thể sử dụng Python để đọc các tệp văn bản lớn. Một đoạn mã đầy đủ chức năng, sẵn sàng để thực hiện được bao gồm trong hướng dẫn này để giúp bạn tăng tốc trong 10 phút sau khi đọc bài viết này.

Trước tiên chúng ta hãy làm quen với bạn với các cấu trúc dữ liệu nâng cao có sẵn trong Python mà chúng tôi sẽ sử dụng để lưu trữ và xử lý dữ liệu từ các tệp, chỉ trong trường hợp bạn mới lập trình Python.

Cấu trúc dữ liệu nâng cao trong Python

Python có hai cấu trúc dữ liệu tiên tiến và mạnh mẽ làm cho nó vượt trội hơn trong chức năng so với C/C ++. Điều này làm cho nó trở thành một ngôn ngữ lý tưởng cho các ứng dụng chuyên sâu dữ liệu số cạnh tranh với MATLAB.

Ndarrays và DataFrames

Thích nghi từ tài liệu Numpy và Pandas OpenSource

Mảng numpy

Các mảng hoặc ndarrays numpy là các mảng có thể được thu nhỏ lên đến kích thước 'n'. Chúng được sử dụng tốt nhất làm cấu trúc mảng hai chiều để đại diện cho ma trận. Bản thân mô -đun Numpy chứa các thư viện chức năng mạnh mẽ cho nhiều hoạt động số và đại số.ndarrays are arrays that can be scaled up to 'n' dimensions. They are best used as two-dimensional array structures to represent matrices. The Numpy module itself contains powerful function libraries for a variety of numerical and algebraic operations.

Khung dữ liệu gấu trúc

Các khung dữ liệu được xây dựng dựa trên các ndarrays hai chiều để thêm chức năng bổ sung. Ndarray hai chiều hiện có một cột riêng cho chỉ mục mảng và tất cả các tiêu đề cột hiện có thể giải quyết riêng lẻ. Quan trọng hơn, mỗi cột bây giờ có thể giữ một loại dữ liệu khác nhau [int, float hoặc chuỗi].

Tệp văn bản được đọc bởi mã Python

Hãy tiến tới hướng dẫn và làm quen với bạn với tệp văn bản trình diễn.

Đó là một bảng dữ liệu cột 14 hàng x 20 được lưu dưới dạng tệp TXT. Nó chứa dữ liệu ở cả ba định dạng dữ liệu: int, float và chuỗi. Tên tập tin là Busdata.

Hình 1: Tệp dữ liệu được phân tích cú pháp với mã của chúng tôi.

Tệp CDF của hệ thống IEEE 14-Bus

Tiếp theo, xem đoạn mã được đưa ra bên dưới, để đọc tệp này và chúng tôi sẽ giải thích từng dòng mã này trong phần sau.

Mã Python để đọc dữ liệu từ tệp văn bản

# Copyrights © Ali Khan [Author]
# Permitted to use with attribution

import numpy
import pandas

def Read []:
    
    global BusData, BusDataList, BusDataArray, BusDataReshaped
    
    X = open['C:/Users/user/OneDrive - Washington State University [email.wsu.edu]/EE - 521/BusData.txt', 'r']
    BusData = X.read[]                      
    
    BusDataList = BusData.split[]
    BusDataArray = numpy.array[BusDataList]
    BusDataReshaped = BusDataArray.reshape[14,20] #Make a matrix out of 1D Array

Read[]

BusDataFrame = pandas.DataFrame[BusDataReshaped, columns =['BusNumber', 'Bus', 'Busx', 'BusClass', 'Unused1', 'Unused2', 'BusType', 'Unused3', 'Unused4', 'BusLoadMW', 'BusLoadMVAR', 'BusGenMW', 'BusGenMVAR', 'InitialVoltAngle', 'InitialVolt', 'Qlimit+', 'Qlimit-', 'Unused5', 'Shunt', 'Unused']]

print[BusDataFrame.BusClass[6]]

Giải thích mã

Đây là một lời giải thích về những gì đang diễn ra trong mã.

Khởi tạo: Nhập Numpy và Pandas

Dòng 4: Nhập gói Numpy trong dự án. Import the numpy package in the project.

Dòng 5: Nhập gói gấu trúc trong dự án. Import the pandas package in the project.

Dòng 7: Bắt đầu một định nghĩa hàm đọc []. Nó luôn luôn là một thực hành tốt để phá vỡ mã của bạn trong các chức năng. Start a function definition Read[]. It is always a good practice to break your code in functions.

Cuộn để tiếp tục

Đọc thêm từ Owlcation

Dòng 9: Xác định các biến toàn cầu. Define global variables.

Trong Python, chỉ các biến toàn cầu sẽ xuất hiện trong Trình thám hiểm biến và chúng có thể được tham chiếu các hàm bên ngoài. Để trình diễn, tôi đã định nghĩa cả bốn là toàn cầu. Mặt khác, chỉ có biến Busdatareshaped nên được tuyên bố toàn cầu.

Hình 2: Trình thám hiểm biến Spyder hiển thị chi tiết của mọi biến.

Bản quyền © Ali Khan [tác giả]

Bài viết này sẽ cung cấp cho bạn một hướng dẫn chi tiết về cách bạn có thể sử dụng Python để đọc các tệp văn bản lớn. Một đoạn mã đầy đủ chức năng, sẵn sàng để thực hiện được bao gồm trong hướng dẫn này để giúp bạn tăng tốc trong 10 phút sau khi đọc bài viết này.

Trước tiên chúng ta hãy làm quen với bạn với các cấu trúc dữ liệu nâng cao có sẵn trong Python mà chúng tôi sẽ sử dụng để lưu trữ và xử lý dữ liệu từ các tệp, chỉ trong trường hợp bạn mới lập trình Python. The open[] function points to the directory location of file BusData.txt. Definition is assigned to random variable X.

Cấu trúc dữ liệu nâng cao trong Python read[] function reads the entire file as a string and assigns it to variable BusData. Fig 2 shows that BusData is now a string with 1792 characters.

Python có hai cấu trúc dữ liệu tiên tiến và mạnh mẽ làm cho nó vượt trội hơn trong chức năng so với C/C ++. Điều này làm cho nó trở thành một ngôn ngữ lý tưởng cho các ứng dụng chuyên sâu dữ liệu số cạnh tranh với MATLAB.

Ndarrays và DataFrames split[] function in Python, splits the string into a list at the points where their is space. The data is now converted into a list of 280 elements and assigned to variable BusDataList. Reference Fig 2.

Thích nghi từ tài liệu Numpy và Pandas OpenSource

Mảng numpy The list is converted into a numpy array by the numpy.array[] function. Fig 2 shows that BusDataArray is now an array of datatype string and has 280 elements.

Các mảng hoặc ndarrays numpy là các mảng có thể được thu nhỏ lên đến kích thước 'n'. Chúng được sử dụng tốt nhất làm cấu trúc mảng hai chiều để đại diện cho ma trận. Bản thân mô -đun Numpy chứa các thư viện chức năng mạnh mẽ cho nhiều hoạt động số và đại số.

Khung dữ liệu gấu trúc The numpy.reshape[] function from the numpy package reshapes the array into our desired dimensions of 14 x 20. Fig 2 shows that BusDataReshaped variable is now an ndarray and has dimensions 14 x 20.

Các khung dữ liệu được xây dựng dựa trên các ndarrays hai chiều để thêm chức năng bổ sung. Ndarray hai chiều hiện có một cột riêng cho chỉ mục mảng và tất cả các tiêu đề cột hiện có thể giải quyết riêng lẻ. Quan trọng hơn, mỗi cột bây giờ có thể giữ một loại dữ liệu khác nhau [int, float hoặc chuỗi].

Hình 3: BusdataFrame, hiển thị 13 cột đầu tiên của nó trong Trình thám hiểm biến

Bản quyền © Ali Khan [tác giả]

Chuyển đổi một mảng numpy thành khung dữ liệu

Dòng 20: Dòng này cuối cùng thực hiện công việc chuyển đổi một mảng các chuỗi thành một khung dữ liệu gấu trúc. This line finally does the job of converting an array of strings into a pandas dataframe.

Hàm pandas.dataframe [] lấy mảng numpy được định hình lại và tên của tất cả 20 tiêu đề cột làm đầu vào. Hình 3 cho thấy DataFrame được hình thành và Hình 2 xác minh điều này trong Trình thám hiểm biến.

Hình 4: Kết quả in

Tham chiếu các giá trị của DataFrame Pandas

Dòng 22: Các giá trị của DataFrame này có thể được truy cập rất thuận tiện bởi DataFrame.ColumnHeader. [Index] Cú pháp. Values of this dataframe can be very conveniently accessed by the dataframe.columnheader.[index] syntax.

Việc kiểm tra các loại biến sẽ cho thấy rằng tất cả ba loại dữ liệu của chuỗi, số nguyên và phao của mỗi cột đều được lưu giữ tự động bởi DataFrame.

Nội dung này là chính xác và đúng với kiến ​​thức tốt nhất của tác giả và không có nghĩa là thay thế cho lời khuyên chính thức và cá nhân từ một chuyên gia có trình độ.

© 2022 Stormshalted

Làm thế nào để bạn đọc một ma trận trong Python?

Chương trình Python: Đọc một ma trận..
m = int [input ["hàng:"]] n = int [input ["cột:"]] ....
a = [] cho i trong phạm vi [m]: hàng = [] cho j trong phạm vi [n]: hàng. ....
a = [] cho i trong phạm vi [m]: a. ....
cho i trong phạm vi [m]: cho j trong phạm vi [n]: in [a [i] [j], end = ""] print [].

Làm cách nào để đọc tệp .text trong Python?

Có 6 chế độ truy cập trong Python ...
Chỉ đọc ['r']: Mở tệp văn bản để đọc. ....
Đọc và viết ['R+']: Mở tệp để đọc và viết. ....
Chỉ viết ['W']: Mở tệp để viết. ....
Viết và đọc ['W+']: Mở tệp để đọc và viết. ....
Chỉ nối thêm ['A']: Mở tệp để viết ..

Làm thế nào để bạn đọc một cột từ một tệp văn bản trong Python?

Để đọc một tệp văn bản trong Python, bạn làm theo các bước sau: Đầu tiên, hãy mở một tệp văn bản để đọc bằng cách sử dụng hàm Open [].Thứ hai, đọc văn bản từ tệp văn bản bằng cách sử dụng phương thức read [], readline [] hoặc readlines [] của đối tượng tệp.Thứ ba, đóng tệp bằng phương thức đóng tệp [].

Python có thể xử lý ma trận không?

Trong ma trận Python có thể được triển khai dưới dạng danh sách 2D hoặc mảng 2D.Hình thành ma trận từ sau, đưa ra các chức năng bổ sung để thực hiện các hoạt động khác nhau trong ma trận.Các hoạt động và mảng này được xác định trong mô -đun Numpy Numpy.matrix can be implemented as 2D list or 2D Array. Forming matrix from latter, gives the additional functionalities for performing various operations in matrix. These operations and array are defines in module “numpy“.

Bài Viết Liên Quan

Chủ Đề