Tổng quan
Giảng dạy: 45 phút Bài tập: 60 phút 45 min
Exercises: 60 minCâu hỏi
Làm cách nào để làm việc với dữ liệu số được trình bày trong bảng?
Mục tiêu
Sử dụng các chức năng trong
1 để đọc trong dữ liệu bảng.[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP'] ['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
Lấy các lát dữ liệu 2D trong các mảng numpy.
Sử dụng các lát 2D để làm việc với các hàng hoặc cột dữ liệu cụ thể.
Sử dụng hàm
2 trong các vòng[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP'] ['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
3.[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP'] ['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
Sử dụng các chức năng
1 để phân tích dữ liệu.[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP'] ['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
Hầu hết các nhà khoa học làm việc với rất nhiều dữ liệu số. Trong mô -đun này, chúng tôi sẽ tập trung vào việc đọc và phân tích dữ liệu số, trực quan hóa dữ liệu và làm việc với các mảng.
Đọc trong dữ liệu dạng bảng
Như chúng ta đã thảo luận, có nhiều cách để đọc trong dữ liệu từ các tệp trong Python. Trong mô -đun cuối cùng của chúng tôi, chúng tôi đã sử dụng hàm
[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
['1' '8.9542' '5.8024' '11.5478' '9.9557']
['2' '8.6181' '6.0942' '13.9594' '11.6945']
...
['9998' '8.6625' '7.7306' '9.5469' '10.3063']
['9999' '9.2456' '7.8886' '9.8151' '10.7564']
['10000' '8.8135' '7.917' '9.9517' '10.7848']]
5 để đọc trong một tệp đầu ra phức tạp. Về lý thuyết, bạn luôn có thể sử dụng hàm [['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
['1' '8.9542' '5.8024' '11.5478' '9.9557']
['2' '8.6181' '6.0942' '13.9594' '11.6945']
...
['9998' '8.6625' '7.7306' '9.5469' '10.3063']
['9999' '9.2456' '7.8886' '9.8151' '10.7564']
['10000' '8.8135' '7.917' '9.9517' '10.7848']]
5 và sau đó sử dụng các công cụ phân tích dữ liệu mà chúng tôi đã học trong mô -đun trước để định dạng dữ liệu khi bạn cần. Nhưng đôi khi có nhiều cách khác có ý nghĩa hơn, đặc biệt nếu dữ liệu là [1] tất cả hoặc chủ yếu là một loại dữ liệu [ví dụ: tất cả các số] và/hoặc [2] được định dạng trong bảng. Thông thường, một bảng sẽ chủ yếu là các số, nhưng có nhãn cột hoặc hàng.Định dạng bảng phổ biến là tệp CSV hoặc các giá trị phân tách bằng dấu phẩy. Đây chính xác là những gì nó nghe như. Dữ liệu được trình bày thành hàng, với mỗi giá trị được phân tách bằng dấu phẩy. Nếu bạn có dữ liệu trong chương trình bảng tính mà bạn cần nhập vào mã Python, bạn có thể lưu dữ liệu dưới dạng CSVFile để đọc nó.
Trong ví dụ này, chúng tôi có một tệp CSV chứa dữ liệu từ quỹ đạo Động lực học phân tử. Chúng tôi có mô phỏng 20 ns sử dụng thời gian 2 FS. Dữ liệu được lưu vào tệp quỹ đạo cứ sau 1000 bước, vì vậy tệp của chúng tôi có 10.000 dấu thời gian. Ở mỗi dấu thời gian, chúng tôi quan tâm đến khoảng cách giữa các nguyên tử cụ thể. Những quỹ đạo này được tạo ra với chương trình Động lực học phân tử Amber và khoảng cách được đo bằng phân tích chương trình Python. Bảng khoảng cách nguyên tử đã được lưu dưới dạng tệp CVS có tên là Detcape Detcent_Data_headers.csv. Tệp này đã được tải xuống như một phần của tài liệu bài học của bạn. Mở tệp trong trình soạn thảo văn bản và nghiên cứu nó để xác định cấu trúc của nó.
Trong việc phân tích dữ liệu bảng, chúng ta thường cần thực hiện các loại tính toán tương tự [tính trung bình, tính toán tối thiểu hoặc tối đa của tập dữ liệu], vì vậy chúng ta một lần nữa sẽ sử dụng thư viện Python, lần này là một thư viện chứa nhiều chức năng để thực hiện các hoạt động toán học. Thư viện này được gọi là
[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
['1' '8.9542' '5.8024' '11.5478' '9.9557']
['2' '8.6181' '6.0942' '13.9594' '11.6945']
...
['9998' '8.6625' '7.7306' '9.5469' '10.3063']
['9999' '9.2456' '7.8886' '9.8151' '10.7564']
['10000' '8.8135' '7.917' '9.9517' '10.7848']]
1. Thư viện [['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
['1' '8.9542' '5.8024' '11.5478' '9.9557']
['2' '8.6181' '6.0942' '13.9594' '11.6945']
...
['9998' '8.6625' '7.7306' '9.5469' '10.3063']
['9999' '9.2456' '7.8886' '9.8151' '10.7564']
['10000' '8.8135' '7.917' '9.9517' '10.7848']]
1 có một số chức năng có sẵn để đọc trong dữ liệu bảng. Một trong những chức năng này là hàm [['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
['1' '8.9542' '5.8024' '11.5478' '9.9557']
['2' '8.6181' '6.0942' '13.9594' '11.6945']
...
['9998' '8.6625' '7.7306' '9.5469' '10.3063']
['9999' '9.2456' '7.8886' '9.8151' '10.7564']
['10000' '8.8135' '7.917' '9.9517' '10.7848']]
9. Chúng tôi sẽ sử dụng chức năng headers = distances[0]
print[headers]
0 để tìm hiểu thêm về [['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
['1' '8.9542' '5.8024' '11.5478' '9.9557']
['2' '8.6181' '6.0942' '13.9594' '11.6945']
...
['9998' '8.6625' '7.7306' '9.5469' '10.3063']
['9999' '9.2456' '7.8886' '9.8151' '10.7564']
['10000' '8.8135' '7.917' '9.9517' '10.7848']]
9 và cách thức hoạt động của nó.library, this time a library that contains lots of functions to perform math operations. This library is called [['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
['1' '8.9542' '5.8024' '11.5478' '9.9557']
['2' '8.6181' '6.0942' '13.9594' '11.6945']
...
['9998' '8.6625' '7.7306' '9.5469' '10.3063']
['9999' '9.2456' '7.8886' '9.8151' '10.7564']
['10000' '8.8135' '7.917' '9.9517' '10.7848']]
1. The [['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
['1' '8.9542' '5.8024' '11.5478' '9.9557']
['2' '8.6181' '6.0942' '13.9594' '11.6945']
...
['9998' '8.6625' '7.7306' '9.5469' '10.3063']
['9999' '9.2456' '7.8886' '9.8151' '10.7564']
['10000' '8.8135' '7.917' '9.9517' '10.7848']]
1 library has several functions available to read in tabular data. One of these functions is the [['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
['1' '8.9542' '5.8024' '11.5478' '9.9557']
['2' '8.6181' '6.0942' '13.9594' '11.6945']
...
['9998' '8.6625' '7.7306' '9.5469' '10.3063']
['9999' '9.2456' '7.8886' '9.8151' '10.7564']
['10000' '8.8135' '7.917' '9.9517' '10.7848']]
9 function. We will use the headers = distances[0]
print[headers]
0 function to learn more about [['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
['1' '8.9542' '5.8024' '11.5478' '9.9557']
['2' '8.6181' '6.0942' '13.9594' '11.6945']
...
['9998' '8.6625' '7.7306' '9.5469' '10.3063']
['9999' '9.2456' '7.8886' '9.8151' '10.7564']
['10000' '8.8135' '7.917' '9.9517' '10.7848']]
9 and how it works.
import numpy
help[numpy.genfromtxt]
Help on function genfromtxt in module numpy.lib.npyio:
genfromtxt[fname, dtype=, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, encoding='bytes']
Load data from a text file, with missing values handled as specified.
Each line past the first `skip_header` lines is split at the `delimiter`
character, and characters following the `comments` character are discarded.
Menu Trợ giúp cho chúng ta thấy tất cả các tùy chọn chúng ta có thể sử dụng với chức năng này. Đầu vào đầu tiên
headers = distances[0]
print[headers]
2 là tên tệp chúng tôi đang đọc. Chúng tôi phải đặt một giá trị cho tùy chọn này vì nó không có giá trị mặc định. Tất cả các tùy chọn khác có giá trị mặc định được hiển thị sau = dấu. Chúng tôi chỉ cần chỉ định các tùy chọn này nếu chúng tôi không muốn sử dụng giá trị mặc định. Ví dụ: trong tệp của chúng tôi, tất cả các giá trị không phải là số nên chúng tôi không muốn sử dụng kiểu dữ liệu headers = distances[0]
print[headers]
3, chúng tôi muốn sử dụng một cái gì đó khác. Nếu bạn có các kiểu dữ liệu hỗn hợp, như chúng tôi làm ở đây, chúng tôi muốn sử dụng headers = distances[0]
print[headers]
4. Trong tập tin của chúng tôi, các giá trị của chúng tôi được phân tách bằng dấu phẩy; Chúng tôi chỉ ra rằng với headers = distances[0]
print[headers]
5.Học sinh thông minh có thể nhận thấy tùy chọn
6, nơi bạn có thể chỉ định một số dòng cần bỏ qua khi bắt đầu tệp. Nếu chúng tôi làm điều này, thì tất cả các giá trị của chúng tôi sẽ là số và chúng tôi có thể sử dụng dtype = xông float, đó là mặc định. Trong ví dụ này, chúng tôi sẽ không làm điều đó bởi vì chúng tôi có thể muốn sử dụng các tiêu đề sau này để dán nhãn mọi thứ, nhưng hãy ghi nhớ tùy chọn này vì bạn có thể muốn sử dụng nó trong một dự án sau này.headers = distances[0] print[headers]
Bây giờ chúng tôi đã có kế hoạch của mình, chúng tôi đã sẵn sàng nhập dữ liệu của chúng tôi với
[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
['1' '8.9542' '5.8024' '11.5478' '9.9557']
['2' '8.6181' '6.0942' '13.9594' '11.6945']
...
['9998' '8.6625' '7.7306' '9.5469' '10.3063']
['9999' '9.2456' '7.8886' '9.8151' '10.7564']
['10000' '8.8135' '7.917' '9.9517' '10.7848']]
9.Đầu tiên, chúng tôi phải có được đường dẫn đến tệp của chúng tôi. Hãy nhớ từ các bài học trước mà chúng tôi sử dụng mô -đun
headers = distances[0]
print[headers]
8 để làm điều này.import os
distance_file = os.path.join['data', 'distance_data_headers.csv']
distances = numpy.genfromtxt[fname=distance_file, delimiter=',', dtype='unicode']
print[distances]
[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
['1' '8.9542' '5.8024' '11.5478' '9.9557']
['2' '8.6181' '6.0942' '13.9594' '11.6945']
...
['9998' '8.6625' '7.7306' '9.5469' '10.3063']
['9999' '9.2456' '7.8886' '9.8151' '10.7564']
['10000' '8.8135' '7.917' '9.9517' '10.7848']]
Đầu ra của chức năng này là một danh sách các danh sách; Đó là, mỗi hàng là một mục trong danh sách của chúng tôi, nhưng mỗi hàng tự nó là một danh sách các giá trị. Chúng ta có thể thấy rằng hàng đầu tiên là các tiêu đề cột của chúng ta và tất cả các hàng khác đều chứa dữ liệu số.
Nếu chúng ta đọc điều này với hàm readlines [], chúng ta sẽ phải phân chia từng dòng của tệp, sử dụng hàm
headers = distances[0]
print[headers]
9 để tạo một danh sách mới cho mỗi hàng, sau đó đặt tất cả các danh sách đó lại thành một danh sách . Sử dụng chức năng [['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
['1' '8.9542' '5.8024' '11.5478' '9.9557']
['2' '8.6181' '6.0942' '13.9594' '11.6945']
...
['9998' '8.6625' '7.7306' '9.5469' '10.3063']
['9999' '9.2456' '7.8886' '9.8151' '10.7564']
['10000' '8.8135' '7.917' '9.9517' '10.7848']]
1 thích hợp làm cho cuộc sống của chúng ta dễ dàng hơn nhiều.Thao tác dữ liệu bảng
Ngay cả bây giờ, chúng ta có thể thấy rằng dòng dữ liệu đầu tiên của chúng ta là các tiêu đề cho các cột của chúng ta và sẽ cần được lưu trữ dưới dạng chuỗi, trong khi tất cả phần còn lại của dữ liệu là số và sẽ cần được lưu trữ dưới dạng phao. Hãy để Lừa lấy một lát dữ liệu chỉ là tiêu đề.
headers = distances[0]
print[headers]
['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
Kiểm tra việc hiểu của bạn
Lấy một lát của dữ liệu chỉ là các giá trị số. Để thống nhất cho các hoạt động sau này, hãy gọi dữ liệu lát này.
Câu trả lời
data = distances[1:] print[data]
[['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ['3' '9.0066' '6.0637' '13.0924' '11.3043'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
Mặc dù bây giờ chúng tôi có một danh sách các danh sách chỉ là các con số, nhưng tất cả các con số vẫn là chuỗi. Chúng tôi biết điều này bởi vì [1] chúng tôi đã đọc tất cả chúng dưới dạng Unicode và [2] nếu chúng tôi nhìn vào đầu ra của câu lệnh in, chúng tôi có thể thấy rằng mỗi số được đặt trong các trích dẫn đơn, cho biết đó là một chuỗi. Chúng ta cần phải lấy lại các giá trị này dưới dạng phao. Thư viện
[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
['1' '8.9542' '5.8024' '11.5478' '9.9557']
['2' '8.6181' '6.0942' '13.9594' '11.6945']
...
['9998' '8.6625' '7.7306' '9.5469' '10.3063']
['9999' '9.2456' '7.8886' '9.8151' '10.7564']
['10000' '8.8135' '7.917' '9.9517' '10.7848']]
1 có chức năng tích hợp để thực hiện điều này. Trong trường hợp này, việc giữ một biến với tất cả các thông tin giống như các chuỗi không hữu ích cho chúng tôi, vì vậy đây là trường hợp chúng tôi sẽ ghi đè dữ liệu biến của chúng tôi.data = data.astype[numpy.float]
print[data]
[[1.00000e+00 8.95420e+00 5.80240e+00 1.15478e+01 9.95570e+00]
[2.00000e+00 8.61810e+00 6.09420e+00 1.39594e+01 1.16945e+01]
[3.00000e+00 9.00660e+00 6.06370e+00 1.30924e+01 1.13043e+01]
...
[9.99800e+03 8.66250e+00 7.73060e+00 9.54690e+00 1.03063e+01]
[9.99900e+03 9.24560e+00 7.88860e+00 9.81510e+00 1.07564e+01]
[1.00000e+04 8.81350e+00 7.91700e+00 9.95170e+00 1.07848e+01]]
Chúng tôi đã học cách giải quyết một yếu tố cụ thể của danh sách và cách lấy một lát danh sách để tạo một danh sách mới. Bây giờ chúng tôi có một mảng, bây giờ chúng tôi cần hai chỉ số để giải quyết một yếu tố cụ thể của mảng. Ký hiệu để giải quyết một phần tử của mảng luôn
Kiểm tra việc hiểu của bạn
Lấy một lát của dữ liệu chỉ là các giá trị số. Để thống nhất cho các hoạt động sau này, hãy gọi dữ liệu lát này.
0Help on function genfromtxt in module numpy.lib.npyio: genfromtxt[fname, dtype=, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, encoding='bytes'] Load data from a text file, with missing values handled as specified. Each line past the first `skip_header` lines is split at the `delimiter` character, and characters following the `comments` character are discarded.
Câu trả lời
Mặc dù bây giờ chúng tôi có một danh sách các danh sách chỉ là các con số, nhưng tất cả các con số vẫn là chuỗi. Chúng tôi biết điều này bởi vì [1] chúng tôi đã đọc tất cả chúng dưới dạng Unicode và [2] nếu chúng tôi nhìn vào đầu ra của câu lệnh in, chúng tôi có thể thấy rằng mỗi số được đặt trong các trích dẫn đơn, cho biết đó là một chuỗi. Chúng ta cần phải lấy lại các giá trị này dưới dạng phao. Thư viện
[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
['1' '8.9542' '5.8024' '11.5478' '9.9557']
['2' '8.6181' '6.0942' '13.9594' '11.6945']
...
['9998' '8.6625' '7.7306' '9.5469' '10.3063']
['9999' '9.2456' '7.8886' '9.8151' '10.7564']
['10000' '8.8135' '7.917' '9.9517' '10.7848']]
1 có chức năng tích hợp để thực hiện điều này. Trong trường hợp này, việc giữ một biến với tất cả các thông tin giống như các chuỗi không hữu ích cho chúng tôi, vì vậy đây là trường hợp chúng tôi sẽ ghi đè dữ liệu biến của chúng tôi.Help on function genfromtxt in module numpy.lib.npyio:
genfromtxt[fname, dtype=, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, encoding='bytes']
Load data from a text file, with missing values handled as specified.
Each line past the first `skip_header` lines is split at the `delimiter`
character, and characters following the `comments` character are discarded.
1Help on function genfromtxt in module numpy.lib.npyio:
genfromtxt[fname, dtype=, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, encoding='bytes']
Load data from a text file, with missing values handled as specified.
Each line past the first `skip_header` lines is split at the `delimiter`
character, and characters following the `comments` character are discarded.
2Chúng tôi đã học cách giải quyết một yếu tố cụ thể của danh sách và cách lấy một lát danh sách để tạo một danh sách mới. Bây giờ chúng tôi có một mảng, bây giờ chúng tôi cần hai chỉ số để giải quyết một yếu tố cụ thể của mảng. Ký hiệu để giải quyết một phần tử của mảng luôn
Kiểm tra việc hiểu của bạn
Lấy một lát của dữ liệu chỉ là các giá trị số. Để thống nhất cho các hoạt động sau này, hãy gọi dữ liệu lát này.
3Help on function genfromtxt in module numpy.lib.npyio: genfromtxt[fname, dtype=, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, encoding='bytes'] Load data from a text file, with missing values handled as specified. Each line past the first `skip_header` lines is split at the `delimiter` character, and characters following the `comments` character are discarded.
Câu trả lời
Mặc dù bây giờ chúng tôi có một danh sách các danh sách chỉ là các con số, nhưng tất cả các con số vẫn là chuỗi. Chúng tôi biết điều này bởi vì [1] chúng tôi đã đọc tất cả chúng dưới dạng Unicode và [2] nếu chúng tôi nhìn vào đầu ra của câu lệnh in, chúng tôi có thể thấy rằng mỗi số được đặt trong các trích dẫn đơn, cho biết đó là một chuỗi. Chúng ta cần phải lấy lại các giá trị này dưới dạng phao. Thư viện
1 có chức năng tích hợp để thực hiện điều này. Trong trường hợp này, việc giữ một biến với tất cả các thông tin giống như các chuỗi không hữu ích cho chúng tôi, vì vậy đây là trường hợp chúng tôi sẽ ghi đè dữ liệu biến của chúng tôi.[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP'] ['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
Chúng tôi đã học cách giải quyết một yếu tố cụ thể của danh sách và cách lấy một lát danh sách để tạo một danh sách mới. Bây giờ chúng tôi có một mảng, bây giờ chúng tôi cần hai chỉ số để giải quyết một yếu tố cụ thể của mảng. Ký hiệu để giải quyết một phần tử của mảng luôn
4Help on function genfromtxt in module numpy.lib.npyio: genfromtxt[fname, dtype=, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, encoding='bytes'] Load data from a text file, with missing values handled as specified. Each line past the first `skip_header` lines is split at the `delimiter` character, and characters following the `comments` character are discarded.
Đầu ra của các dòng mã này sẽ là gì?
Ở đó, bạn cũng có thể lấy các lát hai chiều của một mảng trong đó bạn chỉ định một loạt các hàng và một loạt các cột cho lát cắt. Ví dụ: đôi khi việc làm việc với một tập hợp dữ liệu nhỏ của chúng tôi để kiểm tra hơn là tập dữ liệu đầy đủ. Lệnh này có một lát cắt chỉ bao gồm mười hàng đầu tiên và ba cột đầu tiên của dữ liệu của chúng tôi.
Help on function genfromtxt in module numpy.lib.npyio:
genfromtxt[fname, dtype=, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, encoding='bytes']
Load data from a text file, with missing values handled as specified.
Each line past the first `skip_header` lines is split at the `delimiter`
character, and characters following the `comments` character are discarded.
5Hãy nhớ rằng việc đếm bắt đầu từ 0, vì vậy 0:10 có nghĩa là bắt đầu ở hàng 0 và bao gồm tất cả các hàng, cho đến nhưng không bao gồm 10. Giống như với các lát danh sách một chiều, nếu bạn không bao gồm một số trước
['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
2 Cắt lát tự động bắt đầu với ['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
3. Nếu bạn không bao gồm một số sau ['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
2, lát cắt sẽ đến cuối danh sách. Do đó, nếu bạn không bao gồm, một ['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
2 có nghĩa là mỗi hàng hoặc mỗi cột.Help on function genfromtxt in module numpy.lib.npyio:
genfromtxt[fname, dtype=, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, encoding='bytes']
Load data from a text file, with missing values handled as specified.
Each line past the first `skip_header` lines is split at the `delimiter`
character, and characters following the `comments` character are discarded.
6Câu lệnh in đầu tiên chọn một hàng cụ thể và mỗi cột.
Câu lệnh in thứ hai chọn từng hàng và tất cả các cột ngoại trừ câu thứ nhất.
Phân tích dữ liệu bảng
Kiểm tra việc hiểu của bạn
Thư viện
1 có nhiều chức năng tích hợp. Ví dụ: để tính toán trung bình [trung bình] của tập dữ liệu, cú pháp là[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP'] ['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
Câu trả lời
Mặc dù bây giờ chúng tôi có một danh sách các danh sách chỉ là các con số, nhưng tất cả các con số vẫn là chuỗi. Chúng tôi biết điều này bởi vì [1] chúng tôi đã đọc tất cả chúng dưới dạng Unicode và [2] nếu chúng tôi nhìn vào đầu ra của câu lệnh in, chúng tôi có thể thấy rằng mỗi số được đặt trong các trích dẫn đơn, cho biết đó là một chuỗi. Chúng ta cần phải lấy lại các giá trị này dưới dạng phao. Thư viện
1 có chức năng tích hợp để thực hiện điều này. Trong trường hợp này, việc giữ một biến với tất cả các thông tin giống như các chuỗi không hữu ích cho chúng tôi, vì vậy đây là trường hợp chúng tôi sẽ ghi đè dữ liệu biến của chúng tôi.[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP'] ['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
Chúng tôi đã học cách giải quyết một yếu tố cụ thể của danh sách và cách lấy một lát danh sách để tạo một danh sách mới. Bây giờ chúng tôi có một mảng, bây giờ chúng tôi cần hai chỉ số để giải quyết một yếu tố cụ thể của mảng. Ký hiệu để giải quyết một phần tử của mảng luôn
Đầu ra của các dòng mã này sẽ là gì?
Help on function genfromtxt in module numpy.lib.npyio:
genfromtxt[fname, dtype=, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, encoding='bytes']
Load data from a text file, with missing values handled as specified.
Each line past the first `skip_header` lines is split at the `delimiter`
character, and characters following the `comments` character are discarded.
8Help on function genfromtxt in module numpy.lib.npyio:
genfromtxt[fname, dtype=, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, encoding='bytes']
Load data from a text file, with missing values handled as specified.
Each line past the first `skip_header` lines is split at the `delimiter`
character, and characters following the `comments` character are discarded.
9Ở đó, bạn cũng có thể lấy các lát hai chiều của một mảng trong đó bạn chỉ định một loạt các hàng và một loạt các cột cho lát cắt. Ví dụ: đôi khi việc làm việc với một tập hợp dữ liệu nhỏ của chúng tôi để kiểm tra hơn là tập dữ liệu đầy đủ. Lệnh này có một lát cắt chỉ bao gồm mười hàng đầu tiên và ba cột đầu tiên của dữ liệu của chúng tôi.
Hãy nhớ rằng việc đếm bắt đầu từ 0, vì vậy 0:10 có nghĩa là bắt đầu ở hàng 0 và bao gồm tất cả các hàng, cho đến nhưng không bao gồm 10. Giống như với các lát danh sách một chiều, nếu bạn không bao gồm một số trước
2 Cắt lát tự động bắt đầu với['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
3. Nếu bạn không bao gồm một số sau['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
2, lát cắt sẽ đến cuối danh sách. Do đó, nếu bạn không bao gồm, một['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
2 có nghĩa là mỗi hàng hoặc mỗi cột.['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP']
0import os distance_file = os.path.join['data', 'distance_data_headers.csv'] distances = numpy.genfromtxt[fname=distance_file, delimiter=',', dtype='unicode'] print[distances]
Câu lệnh in đầu tiên chọn một hàng cụ thể và mỗi cột.
Câu lệnh in thứ hai chọn từng hàng và tất cả các cột ngoại trừ câu thứ nhất.
1import os distance_file = os.path.join['data', 'distance_data_headers.csv'] distances = numpy.genfromtxt[fname=distance_file, delimiter=',', dtype='unicode'] print[distances]
Gợi ý: Bạn sẽ cần một vòng
3 kép để đo khoảng cách giữa tất cả các nguyên tử. Nếu bạn không chắc chắn làm thế nào để bắt đầu, hãy in các biến bên trong vòng lặp của bạn.[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP'] ['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
Dung dịch
Đây là một giải pháp sử dụng hàm
9 để đọc trong dữ liệu. Có nhiều giải pháp khác có thể.data = distances[1:] print[data]
2import os distance_file = os.path.join['data', 'distance_data_headers.csv'] distances = numpy.genfromtxt[fname=distance_file, delimiter=',', dtype='unicode'] print[distances]
Đây là một giải pháp sử dụng
5.[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP'] ['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
3import os distance_file = os.path.join['data', 'distance_data_headers.csv'] distances = numpy.genfromtxt[fname=distance_file, delimiter=',', dtype='unicode'] print[distances]
Tên biến
Trong giải pháp của chúng tôi ở trên, chúng tôi gọi là biến độ dài trái phiếu của chúng tôi
1. Chúng tôi có thể gọi biến này bất cứ điều gì chúng tôi muốn. Hãy xem xét hai tên biến tiềm năng sau đây cho độ dài trái phiếu -[['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ['3' '9.0066' '6.0637' '13.0924' '11.3043'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
2 và[['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ['3' '9.0066' '6.0637' '13.0924' '11.3043'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
1. Cái nào rõ ràng hơn với bạn? Mặc dù bạn có thể biết[['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ['3' '9.0066' '6.0637' '13.0924' '11.3043'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
4 có nghĩa là gì và những người khác có thể tìm ra nó thông qua bối cảnh, nhưng nó dễ dàng hơn đối với người khác nếu bạn đưa ra các biến của bạn tên rõ ràng.[['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ['3' '9.0066' '6.0637' '13.0924' '11.3043'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
Phần mở rộng dự án 1
Dự án ban đầu của bạn đã tính khoảng cách giữa mọi bộ nguyên tử. Tuy nhiên, một số nguyên tử này không thực sự gắn kết với nhau. H1 và H2 không được liên kết chẳng hạn, và tất cả khoảng cách giữa một nguyên tử và chính nó bằng không. Sử dụng mức cắt khoảng cách 1,5 angstroms để xác định liên kết [nghĩa là, nếu độ dài liên kết lớn hơn 1,5 angstroms, hãy xem xét các nguyên tử không liên kết]. Sửa đổi mã của bạn để chỉ in các nguyên tử thực sự được liên kết với nhau.
Dung dịch
Đây là một giải pháp sử dụng hàm
9 để đọc trong dữ liệu. Có nhiều giải pháp khác có thể.data = distances[1:] print[data]
4import os distance_file = os.path.join['data', 'distance_data_headers.csv'] distances = numpy.genfromtxt[fname=distance_file, delimiter=',', dtype='unicode'] print[distances]
Đây là một giải pháp sử dụng
5.[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP'] ['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
5import os distance_file = os.path.join['data', 'distance_data_headers.csv'] distances = numpy.genfromtxt[fname=distance_file, delimiter=',', dtype='unicode'] print[distances]
Tên biến
Trong giải pháp của chúng tôi ở trên, chúng tôi gọi là biến độ dài trái phiếu của chúng tôi
1. Chúng tôi có thể gọi biến này bất cứ điều gì chúng tôi muốn. Hãy xem xét hai tên biến tiềm năng sau đây cho độ dài trái phiếu -[['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ['3' '9.0066' '6.0637' '13.0924' '11.3043'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
2 và[['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ['3' '9.0066' '6.0637' '13.0924' '11.3043'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
1. Cái nào rõ ràng hơn với bạn? Mặc dù bạn có thể biết[['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ['3' '9.0066' '6.0637' '13.0924' '11.3043'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
4 có nghĩa là gì và những người khác có thể tìm ra nó thông qua bối cảnh, nhưng nó dễ dàng hơn đối với người khác nếu bạn đưa ra các biến của bạn tên rõ ràng.[['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ['3' '9.0066' '6.0637' '13.0924' '11.3043'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
Dung dịch
Phần mở rộng dự án 1
Dự án ban đầu của bạn đã tính khoảng cách giữa mọi bộ nguyên tử. Tuy nhiên, một số nguyên tử này không thực sự gắn kết với nhau. H1 và H2 không được liên kết chẳng hạn, và tất cả khoảng cách giữa một nguyên tử và chính nó bằng không. Sử dụng mức cắt khoảng cách 1,5 angstroms để xác định liên kết [nghĩa là, nếu độ dài liên kết lớn hơn 1,5 angstroms, hãy xem xét các nguyên tử không liên kết]. Sửa đổi mã của bạn để chỉ in các nguyên tử thực sự được liên kết với nhau.
7import os distance_file = os.path.join['data', 'distance_data_headers.csv'] distances = numpy.genfromtxt[fname=distance_file, delimiter=',', dtype='unicode'] print[distances]
Thêm một câu lệnh
5 trước câu lệnh in của bạn.[['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ['3' '9.0066' '6.0637' '13.0924' '11.3043'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
Sản lượng của bạn bây giờ sẽ là
Dung dịch
Phần mở rộng dự án 2
8import os distance_file = os.path.join['data', 'distance_data_headers.csv'] distances = numpy.genfromtxt[fname=distance_file, delimiter=',', dtype='unicode'] print[distances]
Một số trong số này thực sự là cùng một độ dài trái phiếu; Ví dụ, O đến H1 và H1 đến O đề cập đến cùng độ dài liên kết. Xóa các bản sao khỏi danh sách của bạn.
9import os distance_file = os.path.join['data', 'distance_data_headers.csv'] distances = numpy.genfromtxt[fname=distance_file, delimiter=',', dtype='unicode'] print[distances]
6import os distance_file = os.path.join['data', 'distance_data_headers.csv'] distances = numpy.genfromtxt[fname=distance_file, delimiter=',', dtype='unicode'] print[distances]
0[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP'] ['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]
Bây giờ đầu ra của bạn nên
Phần mở rộng dự án 3
Viết đầu ra của bạn vào một tệp văn bản có tên Bond_lengths.txt thay vì chỉ in nó ra màn hình.
Ở đâu đó bên ngoài vòng lặp
3 của bạn, hãy mở tệp để viết.[['Frame' 'THR4_ATP' 'THR4_ASP' 'TYR6_ATP' 'TYR6_ASP'] ['1' '8.9542' '5.8024' '11.5478' '9.9557'] ['2' '8.6181' '6.0942' '13.9594' '11.6945'] ... ['9998' '8.6625' '7.7306' '9.5469' '10.3063'] ['9999' '9.2456' '7.8886' '9.8151' '10.7564'] ['10000' '8.8135' '7.917' '9.9517' '10.7848']]