NumPy là gói phân tích dữ liệu Python thường được sử dụng. Bằng cách sử dụng NumPy, bạn có thể tăng tốc quy trình làm việc của mình và giao tiếp với các gói khác trong hệ sinh thái Python, như scikit-learning, sử dụng NumPy dưới mui xe. NumPy ban đầu được phát triển vào giữa những năm 2000 và phát sinh từ một gói thậm chí còn cũ hơn có tên là Numeric. Tuổi thọ này có nghĩa là hầu hết mọi gói phân tích dữ liệu hoặc máy học cho Python đều tận dụng NumPy theo một cách nào đó
Trong hướng dẫn này, chúng tôi sẽ hướng dẫn sử dụng NumPy để phân tích dữ liệu về chất lượng rượu vang. Dữ liệu chứa thông tin về các thuộc tính khác nhau của rượu vang, chẳng hạn như
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
07 và
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
08, cùng với điểm chất lượng trong khoảng từ
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
09 đến
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
10 cho mỗi loại rượu vang. Điểm chất lượng là điểm trung bình của ít nhất
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
11 người thử hương vị con người. Khi tìm hiểu cách làm việc với NumPy, chúng tôi sẽ cố gắng tìm hiểu thêm về chất lượng cảm nhận của rượu vangCác loại rượu chúng tôi sẽ phân tích là từ vùng Minho của Bồ Đào Nha
Dữ liệu được tải xuống từ Kho lưu trữ máy học của UCI và có sẵn tại đây. Đây là một vài hàng đầu tiên của tệp
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
12 mà chúng tôi sẽ sử dụng trong suốt hướng dẫn này"fixed acidity";"volatile acidity";"citric acid";"residual sugar";"chlorides";"free sulfur dioxide";"total sulfur dioxide";"density";"pH";"sulphates";"alcohol";"quality"
7.4;0.7;0;1.9;0.076;11;34;0.9978;3.51;0.56;9.4;5
7.8;0.88;0;2.6;0.098;25;67;0.9968;3.2;0.68;9.8;5
Dữ liệu ở định dạng mà tôi sẽ gọi là ssv [các giá trị được phân tách bằng dấu chấm phẩy] — mỗi bản ghi được phân tách bằng dấu chấm phẩy [
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
13] và các hàng được phân tách bằng một dòng mới. Có
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
14 hàng trong tệp, bao gồm hàng tiêu đề và
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
15 cộtTrước khi chúng tôi bắt đầu, một ghi chú phiên bản nhanh - chúng tôi sẽ sử dụng Python 3. 5. Các ví dụ mã của chúng tôi sẽ được thực hiện bằng sổ ghi chép Jupyter
Danh sách danh sách cho dữ liệu CSV
Trước khi sử dụng NumPy, trước tiên chúng tôi sẽ thử làm việc với dữ liệu bằng Python và gói csv. Chúng tôi có thể đọc trong tệp bằng cách sử dụng đối tượng, điều này sẽ cho phép chúng tôi đọc và chia nhỏ tất cả nội dung từ tệp ssv
Trong đoạn mã dưới đây, chúng tôi
- Nhập thư viện
16import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Mở tệp
12import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Với tệp đang mở, hãy tạo một đối tượng
18 mớiimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Chuyển đối số từ khóa
19 để đảm bảo rằng các bản ghi được phân chia theo ký tự dấu chấm phẩy thay vì ký tự dấu phẩy mặc địnhimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Chuyển đối số từ khóa
- Gọi loại để lấy tất cả các hàng từ tệp
- Gán kết quả cho
20import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Với tệp đang mở, hãy tạo một đối tượng
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
Khi chúng tôi đã đọc dữ liệu, chúng tôi có thể in ra
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
11 hàng đầu tiênprint[wines[:3]]
[['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol', 'quality'], ['7.4', '0.7', '0', '1.9', '0.076', '11', '34', '0.9978', '3.51', '0.56', '9.4', '5'], ['7.8', '0.88', '0', '2.6', '0.098', '25', '67', '0.9968', '3.2', '0.68', '9.8', '5']]
Dữ liệu đã được đọc vào một danh sách các danh sách. Mỗi danh sách bên trong là một hàng từ tệp ssv. Như bạn có thể nhận thấy, mỗi mục trong toàn bộ danh sách được biểu diễn dưới dạng một chuỗi, điều này sẽ khiến việc tính toán trở nên khó khăn hơn
Chúng tôi sẽ định dạng dữ liệu thành một bảng để dễ xem hơn
độ axit cố định độ axit dễ bay hơi axit xitric đường dư clorua lưu huỳnh đioxit tự do tổng lưu huỳnh đioxit tỷ trọng pH sunfat rượu cồn chất lượng7. 40. 7001. 90. 07611340. 99783. 510. 569. 457. 80. 8802. 60. 09825670. 99683. 200. 689. 85
Như bạn có thể thấy từ bảng trên, chúng tôi đã đọc thành ba hàng, hàng đầu tiên chứa các tiêu đề cột. Mỗi hàng sau hàng tiêu đề đại diện cho một loại rượu. Phần tử đầu tiên của mỗi hàng là
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
08, phần tử thứ hai là
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
23, v.v. Chúng tôi có thể tìm thấy trung bình _______ 24 loại rượu. Đoạn mã dưới đây sẽ- Trích xuất phần tử cuối cùng từ mỗi hàng sau hàng tiêu đề
- Chuyển đổi từng phần tử được trích xuất thành float
- Gán tất cả các phần tử được trích xuất vào danh sách
25import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Chia tổng của tất cả các phần tử trong
25 cho tổng số phần tử trongimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
25 để lấy giá trị trung bìnhimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
qualities =
[float[item[-1]] for item in wines[1:]]
sum[qualities] / len[qualities]
5.6360225140712945
Mặc dù chúng tôi có thể thực hiện phép tính mà chúng tôi muốn, nhưng mã này khá phức tạp và sẽ không vui khi phải làm điều gì đó tương tự mỗi khi chúng tôi muốn tính toán một số lượng. May mắn thay, chúng ta có thể sử dụng NumPy để làm việc với dữ liệu của mình dễ dàng hơn
Mảng 2 chiều Numpy
Với NumPy, chúng tôi làm việc với mảng nhiều chiều. Chúng ta sẽ đi sâu vào tất cả các loại mảng đa chiều có thể có ở phần sau, nhưng bây giờ, chúng ta sẽ tập trung vào mảng 2 chiều. Mảng 2 chiều còn được gọi là ma trận và là thứ bạn nên làm quen. Trên thực tế, đó chỉ là một cách nghĩ khác về danh sách các danh sách. Một ma trận có hàng và cột. Bằng cách chỉ định số hàng và số cột, chúng tôi có thể trích xuất một phần tử từ ma trận
Trong ma trận bên dưới, hàng đầu tiên là hàng tiêu đề và cột đầu tiên là cột
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
08độ axit cố định độ axit dễ bay hơi axit xitric đường dư clorua lưu huỳnh đioxit tự do tổng lưu huỳnh đioxit tỷ trọng pH sunfat rượu cồn chất lượng7. 40. 7001. 90. 07611340. 99783. 510. 569. 457. 80. 8802. 60. 09825670. 99683. 200. 689. 85
Nếu chúng tôi chọn phần tử ở hàng đầu tiên và cột thứ hai, chúng tôi sẽ nhận được
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
23. Nếu chúng tôi chọn phần tử ở hàng thứ ba và cột thứ hai, chúng tôi sẽ nhận được
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
30Trong một mảng NumPy, số thứ nguyên được gọi là thứ hạng và mỗi thứ nguyên được gọi là một trục. Vì vậy, các hàng là trục đầu tiên và các cột là trục thứ hai
Bây giờ bạn đã hiểu những kiến thức cơ bản về ma trận, hãy xem cách chúng ta có thể chuyển từ danh sách các danh sách của mình sang một mảng NumPy
Tạo một mảng NumPy
Chúng ta có thể tạo một mảng NumPy bằng cách sử dụng numpy. hàm mảng. Nếu chúng ta chuyển vào một danh sách các danh sách, nó sẽ tự động tạo một mảng NumPy có cùng số hàng và số cột. Bởi vì chúng tôi muốn tất cả các phần tử trong mảng là phần tử float để dễ dàng tính toán, chúng tôi sẽ bỏ qua hàng tiêu đề chứa các chuỗi. Một trong những hạn chế của NumPy là tất cả các phần tử trong một mảng phải cùng loại, vì vậy nếu chúng ta bao gồm hàng tiêu đề, tất cả các phần tử trong mảng sẽ được đọc dưới dạng chuỗi. Bởi vì chúng tôi muốn có thể thực hiện các phép tính như tìm
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
24 trung bình của các loại rượu, chúng tôi cần tất cả các phần tử đều là số floatTrong đoạn mã dưới đây, chúng tôi
- Nhập gói
32import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Chuyển danh sách các danh sách
20 vào hàmimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
34, hàm này chuyển đổi nó thành một mảng NumPyimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Loại trừ hàng tiêu đề bằng cách cắt danh sách
- Chỉ định đối số từ khóa
35 để đảm bảo mỗi phần tử được chuyển đổi thành float. Chúng ta sẽ đi sâu hơn vào những gìimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
35 sau nàyimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
import csv
with open["winequality-red.csv", 'r'] as f:
wines = list[csv.reader[f, delimiter=";"]]
import numpy as np
wines = np.array[wines[1:], dtype=np.float]
Hãy thử chạy đoạn mã trên và xem điều gì sẽ xảy ra
Nếu chúng tôi hiển thị
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20, bây giờ chúng tôi sẽ nhận được một mảng NumPywines
array[[[ 7.4 , 0.7 , 0. , ..., 0.56 , 9.4 , 5. ],
[ 7.8 , 0.88 , 0. , ..., 0.68 , 9.8 , 5. ],
[ 7.8 , 0.76 , 0.04 , ..., 0.65 , 9.8 , 5. ],
...,
[ 6.3 , 0.51 , 0.13 , ..., 0.75 , 11. , 6. ],
[ 5.9 , 0.645, 0.12 , ..., 0.71 , 10.2 , 5. ],
[ 6. , 0.31 , 0.47 , ..., 0.66 , 11. , 6. ]]]
Chúng tôi có thể kiểm tra số lượng hàng và cột trong dữ liệu của mình bằng cách sử dụng thuộc tính hình dạng của mảng NumPy
wines.shape
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
0Phương pháp tạo mảng NumPy thay thế
Có nhiều phương pháp mà bạn có thể sử dụng để tạo mảng NumPy. Để bắt đầu, bạn có thể tạo một mảng trong đó mọi phần tử đều bằng không. Đoạn mã dưới đây sẽ tạo một mảng có
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
11 hàng và
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
39 cột, trong đó mọi phần tử là
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
09, sử dụng numpy. số không
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
1
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
2Thật hữu ích khi tạo một mảng có tất cả các phần tử bằng 0 trong trường hợp bạn cần một mảng có kích thước cố định, nhưng chưa có bất kỳ giá trị nào cho nó
Bạn cũng có thể tạo một mảng trong đó mỗi phần tử là một số ngẫu nhiên bằng cách sử dụng numpy. ngẫu nhiên. rand. Đây là một ví dụ
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
3
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
4Tạo các mảng chứa đầy các số ngẫu nhiên có thể hữu ích khi bạn muốn nhanh chóng kiểm tra mã của mình bằng các mảng mẫu
Sử dụng NumPy để đọc trong tệp
Có thể sử dụng NumPy để đọc trực tiếp csv hoặc các tệp khác vào mảng. Chúng ta có thể làm điều này bằng cách sử dụng numpy. chức năng genfromtxt. Chúng ta có thể sử dụng nó để đọc dữ liệu ban đầu về rượu vang đỏ
Trong đoạn mã dưới đây, chúng tôi
- Sử dụng hàm
41 để đọc trong tệpimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
12import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Chỉ định đối số từ khóa
19 để các trường được phân tích cú pháp chính xácimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Chỉ định đối số từ khóa
44 để hàng tiêu đề được bỏ quaimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
5
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20 cuối cùng sẽ trông giống như khi chúng ta đọc nó thành một danh sách rồi chuyển đổi nó thành một mảng float. NumPy sẽ tự động chọn kiểu dữ liệu cho các phần tử trong một mảng dựa trên định dạng của chúngLập chỉ mục mảng NumPy
Bây giờ chúng tôi biết cách tạo mảng, nhưng trừ khi chúng tôi có thể truy xuất kết quả từ chúng, chúng tôi không thể làm được gì nhiều với NumPy. Chúng ta có thể sử dụng lập chỉ mục mảng để chọn từng phần tử, nhóm phần tử hoặc toàn bộ hàng và cột. Một điều quan trọng cần lưu ý là giống như danh sách Python, NumPy không được lập chỉ mục, nghĩa là chỉ mục của hàng đầu tiên là
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
09 và chỉ mục của cột đầu tiên là
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
09. Nếu chúng tôi muốn làm việc với hàng thứ tư, chúng tôi sẽ sử dụng chỉ mục
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
11, nếu chúng tôi muốn làm việc với hàng thứ hai, chúng tôi sẽ sử dụng chỉ mục
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
49, v.v. Chúng ta sẽ lại làm việc với mảng
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
207. 40. 700. 001. 90. 07611340. 99783. 510. 569. 457. 80. 880. 002. 60. 09825670. 99683. 200. 689. 857. 80. 760. 042. 30. 09215540. 99703. 260. 659. 8511. 20. 280. 561. 90. 07517600. 99803. 160. 589. 867. 40. 700. 001. 90. 07611340. 99783. 510. 569. 45
Hãy chọn phần tử ở hàng
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
11 và cột
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
39. Trong đoạn mã dưới đây, chúng tôi chuyển vào chỉ mục
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
53 làm chỉ mục hàng và chỉ mục
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
11 làm chỉ mục cột. Điều này lấy giá trị từ cột thứ tư của hàng thứ ba
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
6_______0_______7Vì chúng tôi đang làm việc với mảng 2 chiều trong NumPy, chúng tôi chỉ định 2 chỉ mục để truy xuất một phần tử. Chỉ mục đầu tiên là hàng hoặc trục
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
49, chỉ mục và chỉ mục thứ hai là cột hoặc trục
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
53, chỉ mục. Bất kỳ phần tử nào trong
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20 đều có thể được truy xuất bằng cách sử dụng chỉ mục
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
53Cắt mảng NumPy
Thay vào đó, nếu chúng ta muốn chọn ba mục đầu tiên từ cột thứ tư, chúng ta có thể thực hiện bằng cách sử dụng dấu hai chấm [
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
59]. Dấu hai chấm cho biết rằng chúng tôi muốn chọn tất cả các phần tử từ chỉ mục bắt đầu cho đến nhưng không bao gồm chỉ mục kết thúc. Đây còn được gọi là lát cắt
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
8_______0_______9Giống như với việc cắt danh sách, có thể bỏ qua
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
09 để chỉ truy xuất tất cả các phần tử từ đầu cho đến phần tử
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
11print[wines[:3]]
0_______0_______9Chúng tôi có thể chọn toàn bộ cột bằng cách chỉ định rằng chúng tôi muốn tất cả các phần tử, từ phần đầu tiên đến phần tử cuối cùng. Chúng tôi xác định điều này bằng cách chỉ sử dụng dấu hai chấm [_______0_______59], không có chỉ số bắt đầu hoặc kết thúc. Đoạn mã dưới đây sẽ chọn toàn bộ cột thứ tư
print[wines[:3]]
2_______17_______3Chúng tôi đã chọn toàn bộ cột ở trên, nhưng chúng tôi cũng có thể trích xuất toàn bộ hàng
print[wines[:3]]
4print[wines[:3]]
5Nếu chúng ta cực kỳ quan tâm đến việc lập chỉ mục, chúng ta có thể chọn toàn bộ mảng bằng cách sử dụng hai dấu hai chấm để chọn tất cả các hàng và cột trong
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20. Đây là một thủ thuật tiệc tùng hay, nhưng không có nhiều ứng dụng hayprint[wines[:3]]
6_______17_______7Gán giá trị cho mảng NumPy
Chúng ta cũng có thể sử dụng lập chỉ mục để gán giá trị cho các phần tử nhất định trong mảng. Chúng ta có thể làm điều này bằng cách gán trực tiếp cho giá trị được lập chỉ mục
print[wines[:3]]
8Chúng ta có thể làm tương tự cho các lát. Để ghi đè lên toàn bộ một cột, chúng ta có thể làm điều này
print[wines[:3]]
9Đoạn mã trên ghi đè lên tất cả các giá trị trong cột thứ mười một với
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
64Mảng NumPy 1 chiều
Cho đến giờ, chúng ta đã làm việc với mảng 2 chiều, chẳng hạn như
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20. Tuy nhiên, NumPy là một gói để làm việc với mảng nhiều chiều. Một trong những loại mảng nhiều chiều phổ biến nhất là mảng 1 chiều, hoặc véc tơ. Như bạn có thể nhận thấy ở trên, khi chúng tôi cắt _______ 0_______20, chúng tôi đã truy xuất một mảng 1 chiều. Mảng 1 chiều chỉ cần một chỉ số duy nhất để truy xuất một phần tử. Mỗi hàng và cột trong mảng 2 chiều là mảng 1 chiều. Giống như danh sách các danh sách tương tự như mảng 2 chiều, danh sách đơn tương tự như mảng 1 chiều. Nếu chúng ta cắt các loại rượu và chỉ truy xuất hàng thứ ba, chúng ta sẽ nhận được mảng 1 chiều[['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol', 'quality'], ['7.4', '0.7', '0', '1.9', '0.076', '11', '34', '0.9978', '3.51', '0.56', '9.4', '5'], ['7.8', '0.88', '0', '2.6', '0.098', '25', '67', '0.9968', '3.2', '0.68', '9.8', '5']]
0Đây là cách
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
67 trông[['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol', 'quality'], ['7.4', '0.7', '0', '1.9', '0.076', '11', '34', '0.9978', '3.51', '0.56', '9.4', '5'], ['7.8', '0.88', '0', '2.6', '0.098', '25', '67', '0.9968', '3.2', '0.68', '9.8', '5']]
1Chúng tôi có thể truy xuất các phần tử riêng lẻ từ
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
67 bằng một chỉ mục duy nhất. Đoạn mã dưới đây sẽ hiển thị mục thứ hai trong
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
67[['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol', 'quality'], ['7.4', '0.7', '0', '1.9', '0.076', '11', '34', '0.9978', '3.51', '0.56', '9.4', '5'], ['7.8', '0.88', '0', '2.6', '0.098', '25', '67', '0.9968', '3.2', '0.68', '9.8', '5']]
2[['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol', 'quality'], ['7.4', '0.7', '0', '1.9', '0.076', '11', '34', '0.9978', '3.51', '0.56', '9.4', '5'], ['7.8', '0.88', '0', '2.6', '0.098', '25', '67', '0.9968', '3.2', '0.68', '9.8', '5']]
3Hầu hết các chức năng NumPy mà chúng tôi đã làm việc cùng, chẳng hạn như numpy. ngẫu nhiên. rand, có thể được sử dụng với mảng nhiều chiều. Đây là cách chúng tôi sử dụng
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
70 để tạo một vectơ ngẫu nhiên[['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol', 'quality'], ['7.4', '0.7', '0', '1.9', '0.076', '11', '34', '0.9978', '3.51', '0.56', '9.4', '5'], ['7.8', '0.88', '0', '2.6', '0.098', '25', '67', '0.9968', '3.2', '0.68', '9.8', '5']]
4[['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol', 'quality'], ['7.4', '0.7', '0', '1.9', '0.076', '11', '34', '0.9978', '3.51', '0.56', '9.4', '5'], ['7.8', '0.88', '0', '2.6', '0.098', '25', '67', '0.9968', '3.2', '0.68', '9.8', '5']]
5Trước đây, khi gọi
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
71, chúng ta đã truyền vào một hình dạng cho mảng 2 chiều, vì vậy kết quả là một mảng 2 chiều. Lần này, chúng ta truyền vào một hình dạng cho mảng một chiều. Hình dạng chỉ định số lượng kích thước và kích thước của mảng trong mỗi kích thước. Một hình dạng của
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
72 sẽ là một mảng 2 chiều với
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
10 hàng và
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
10 cột. Một hình dạng của
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
75 sẽ là một mảng 1 chiều với
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
10 phần tửTrường hợp NumPy trở nên phức tạp hơn là khi chúng ta bắt đầu xử lý các mảng có nhiều hơn _________53 chiều
Mảng NumPy N chiều
Điều này không xảy ra thường xuyên, nhưng có những trường hợp bạn sẽ muốn xử lý các mảng có lớn hơn _______ 11 kích thước. Một cách để nghĩ về điều này là một danh sách các danh sách. Giả sử chúng tôi muốn lưu trữ thu nhập hàng tháng của một cửa hàng, nhưng chúng tôi muốn có thể nhanh chóng tra cứu kết quả trong một quý và trong một năm. Thu nhập trong một năm có thể trông như thế này
[['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol', 'quality'], ['7.4', '0.7', '0', '1.9', '0.076', '11', '34', '0.9978', '3.51', '0.56', '9.4', '5'], ['7.8', '0.88', '0', '2.6', '0.098', '25', '67', '0.9968', '3.2', '0.68', '9.8', '5']]
6Cửa hàng đã kiếm được _______79 vào tháng 1, _______80 vào tháng 2, v.v. Chúng tôi có thể chia các khoản thu nhập này theo quý thành một danh sách các danh sách
[['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol', 'quality'], ['7.4', '0.7', '0', '1.9', '0.076', '11', '34', '0.9978', '3.51', '0.56', '9.4', '5'], ['7.8', '0.88', '0', '2.6', '0.098', '25', '67', '0.9968', '3.2', '0.68', '9.8', '5']]
7Chúng tôi có thể truy xuất thu nhập từ tháng 1 bằng cách gọi tới số
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
81. Nếu chúng tôi muốn biết kết quả của cả quý, chúng tôi có thể gọi cho
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
82 hoặc
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
83. Bây giờ chúng ta có một mảng 2 chiều hoặc ma trận. Nhưng nếu bây giờ chúng ta muốn thêm kết quả từ một năm khác thì sao? [['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol', 'quality'], ['7.4', '0.7', '0', '1.9', '0.076', '11', '34', '0.9978', '3.51', '0.56', '9.4', '5'], ['7.8', '0.88', '0', '2.6', '0.098', '25', '67', '0.9968', '3.2', '0.68', '9.8', '5']]
8Chúng tôi có thể truy xuất số tiền kiếm được từ tháng 1 của năm đầu tiên bằng cách gọi tới số
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
84. Bây giờ chúng ta cần ba chỉ mục để truy xuất một phần tử. Một mảng ba chiều trong NumPy cũng giống như vậy. Trên thực tế, chúng ta có thể chuyển đổi
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
85 thành một mảng và sau đó lấy thu nhập cho tháng 1 của năm đầu tiên[['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol', 'quality'], ['7.4', '0.7', '0', '1.9', '0.076', '11', '34', '0.9978', '3.51', '0.56', '9.4', '5'], ['7.8', '0.88', '0', '2.6', '0.098', '25', '67', '0.9968', '3.2', '0.68', '9.8', '5']]
9qualities =
[float[item[-1]] for item in wines[1:]]
sum[qualities] / len[qualities]
0Chúng ta cũng có thể tìm thấy hình dạng của mảng
qualities =
[float[item[-1]] for item in wines[1:]]
sum[qualities] / len[qualities]
1qualities =
[float[item[-1]] for item in wines[1:]]
sum[qualities] / len[qualities]
2Lập chỉ mục và cắt hoạt động theo cùng một cách chính xác với mảng 3 chiều, nhưng bây giờ chúng ta có thêm một trục để chuyển vào. Nếu chúng tôi muốn nhận thu nhập cho tháng Giêng của tất cả các năm, chúng tôi có thể làm điều này
qualities =
[float[item[-1]] for item in wines[1:]]
sum[qualities] / len[qualities]
3qualities =
[float[item[-1]] for item in wines[1:]]
sum[qualities] / len[qualities]
4Nếu chúng tôi muốn nhận được thu nhập quý đầu tiên từ cả hai năm, chúng tôi có thể làm điều này
qualities =
[float[item[-1]] for item in wines[1:]]
sum[qualities] / len[qualities]
5qualities =
[float[item[-1]] for item in wines[1:]]
sum[qualities] / len[qualities]
6Việc thêm nhiều thứ nguyên hơn có thể giúp truy vấn dữ liệu của bạn dễ dàng hơn nhiều nếu dữ liệu được sắp xếp theo một cách nhất định. Khi chúng ta chuyển từ mảng 3 chiều sang mảng 4 chiều và mảng lớn hơn, các thuộc tính tương tự sẽ được áp dụng và chúng có thể được lập chỉ mục và cắt theo cùng một cách
Kiểu dữ liệu NumPy
Như chúng tôi đã đề cập trước đó, mỗi mảng NumPy có thể lưu trữ các phần tử của một kiểu dữ liệu. Ví dụ:
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20 chỉ chứa các giá trị float. NumPy lưu trữ các giá trị bằng cách sử dụng các kiểu dữ liệu riêng của nó, khác với các kiểu Python như
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
87 và
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
88. Điều này là do lõi của NumPy được viết bằng ngôn ngữ lập trình có tên C, ngôn ngữ này lưu trữ dữ liệu khác với các loại dữ liệu Python. Ánh xạ kiểu dữ liệu NumPy giữa Python và C, cho phép chúng tôi sử dụng mảng NumPy mà không gặp bất kỳ trở ngại chuyển đổi nàoBạn có thể tìm thấy kiểu dữ liệu của mảng NumPy bằng cách truy cập thuộc tính dtype
qualities =
[float[item[-1]] for item in wines[1:]]
sum[qualities] / len[qualities]
7qualities =
[float[item[-1]] for item in wines[1:]]
sum[qualities] / len[qualities]
8NumPy có một số loại dữ liệu khác nhau, chủ yếu ánh xạ tới các loại dữ liệu Python, như
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
87 và
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
88. Bạn có thể tìm thấy danh sách đầy đủ các loại dữ liệu NumPy tại đây, nhưng đây là một số loại quan trọng
87 — dữ liệu số dấu phẩy độngimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
92 — dữ liệu số nguyênimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
93 — dữ liệu ký tựimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
94 — Các đối tượng Pythonimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
Ngoài ra, các loại dữ liệu kết thúc bằng một hậu tố cho biết chúng chiếm bao nhiêu bit bộ nhớ. Vì vậy,
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
95 là kiểu dữ liệu số nguyên 32 bit và
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
96 là kiểu dữ liệu float
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
97 bitChuyển đổi kiểu dữ liệu
Bạn có thể sử dụng numpy. ndarray. phương thức astype để chuyển đổi một mảng thành một kiểu khác. Phương thức sẽ thực sự sao chép mảng và trả về một mảng mới với kiểu dữ liệu đã chỉ định. Chẳng hạn, chúng ta có thể chuyển đổi
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20 thành kiểu dữ liệu
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
92qualities =
[float[item[-1]] for item in wines[1:]]
sum[qualities] / len[qualities]
95.6360225140712945
0Như bạn có thể thấy ở trên, tất cả các mục trong mảng kết quả là số nguyên. Lưu ý rằng chúng tôi đã sử dụng loại Python
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
92 thay vì loại dữ liệu NumPy khi chuyển đổi
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20. Điều này là do một số loại dữ liệu Python, bao gồm
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
87,
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
92 và
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
93, có thể được sử dụng với NumPy và được tự động chuyển đổi thành loại dữ liệu NumPyChúng ta có thể kiểm tra thuộc tính của mảng kết quả để xem kiểu dữ liệu nào NumPy đã ánh xạ mảng kết quả tới
5.6360225140712945
1_______26_______2Mảng đã được chuyển đổi sang kiểu dữ liệu số nguyên 64 bit. Điều này cho phép các giá trị số nguyên rất dài, nhưng chiếm nhiều dung lượng trong bộ nhớ hơn là lưu trữ các giá trị dưới dạng số nguyên 32 bit
Nếu bạn muốn kiểm soát nhiều hơn cách mảng được lưu trữ trong bộ nhớ, bạn có thể trực tiếp tạo các đối tượng dtype NumPy như numpy. int32
5.6360225140712945
3_______26_______4Bạn có thể sử dụng chúng trực tiếp để chuyển đổi giữa các loại
5.6360225140712945
55.6360225140712945
6Hoạt động mảng NumPy
NumPy làm cho việc thực hiện các phép toán trên mảng trở nên đơn giản. Đây là một trong những ưu điểm chính của NumPy và giúp tính toán khá dễ dàng
Toán mảng đơn
Nếu bạn thực hiện bất kỳ phép toán cơ bản nào [
print[wines[:3]]
05, print[wines[:3]]
06, print[wines[:3]]
07, print[wines[:3]]
08, print[wines[:3]]
09] với một mảng và một giá trị, nó sẽ áp dụng phép toán đó cho từng phần tử trong mảngGiả sử chúng tôi muốn thêm _______ 10 điểm vào mỗi điểm chất lượng vì chúng tôi say và cảm thấy hào phóng. Đây là cách chúng tôi làm điều đó
5.6360225140712945
75.6360225140712945
8Lưu ý rằng thao tác trên sẽ không thay đổi mảng
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20 — nó sẽ trả về một mảng 1 chiều mới trong đó
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
10 đã được thêm vào từng phần tử trong cột chất lượng rượu vangThay vào đó, nếu chúng tôi đã làm
print[wines[:3]]
13, chúng tôi sẽ sửa đổi mảng tại chỗ5.6360225140712945
95.6360225140712945
8Tất cả các hoạt động khác hoạt động theo cùng một cách. Ví dụ: nếu chúng tôi muốn nhân mỗi điểm chất lượng với
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
53, chúng tôi có thể thực hiện như sau
import csv
with open["winequality-red.csv", 'r'] as f:
wines = list[csv.reader[f, delimiter=";"]]
import numpy as np
wines = np.array[wines[1:], dtype=np.float]
1____36_______2Toán nhiều mảng
Cũng có thể thực hiện các phép toán giữa các mảng. Điều này sẽ áp dụng thao tác cho các cặp phần tử. Ví dụ: nếu chúng tôi thêm cột
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
24 vào chính nó, đây là những gì chúng tôi nhận được
import csv
with open["winequality-red.csv", 'r'] as f:
wines = list[csv.reader[f, delimiter=";"]]
import numpy as np
wines = np.array[wines[1:], dtype=np.float]
3_______36_______4Lưu ý rằng điều này tương đương với
print[wines[:3]]
16 — điều này là do NumPy thêm từng cặp phần tử. Phần tử đầu tiên trong mảng thứ nhất được thêm vào phần tử đầu tiên trong mảng thứ hai, phần tử thứ hai đến phần tử thứ hai, v.v.Chúng ta cũng có thể sử dụng điều này để nhân mảng. Giả sử chúng ta muốn chọn một loại rượu có hàm lượng và chất lượng cồn tối đa [chúng ta muốn say, nhưng chúng ta sang trọng]. Chúng tôi sẽ nhân
print[wines[:3]]
17 với
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
24 và chọn loại rượu có số điểm cao nhất
import csv
with open["winequality-red.csv", 'r'] as f:
wines = list[csv.reader[f, delimiter=";"]]
import numpy as np
wines = np.array[wines[1:], dtype=np.float]
5
import csv
with open["winequality-red.csv", 'r'] as f:
wines = list[csv.reader[f, delimiter=";"]]
import numpy as np
wines = np.array[wines[1:], dtype=np.float]
6Tất cả các hoạt động phổ biến [
print[wines[:3]]
05, print[wines[:3]]
06, print[wines[:3]]
07, print[wines[:3]]
08, print[wines[:3]]
09] sẽ hoạt động giữa các mảngPhát thanh truyền hình
Trừ khi các mảng mà bạn đang thao tác có cùng kích thước chính xác, nếu không thì không thể thực hiện các thao tác theo phần tử. Trong những trường hợp như thế này, NumPy thực hiện phát sóng để cố gắng khớp các phần tử. Về cơ bản, phát sóng bao gồm một số bước
- Kích thước cuối cùng của mỗi mảng được so sánh
- Nếu chiều dài các chiều bằng nhau hoặc một trong các chiều có chiều dài
49, thì chúng ta tiếp tụcimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Nếu độ dài của các thứ nguyên không bằng nhau và không có thứ nguyên nào có độ dài
49, thì sẽ xảy ra lỗiimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Nếu chiều dài các chiều bằng nhau hoặc một trong các chiều có chiều dài
- Tiếp tục kiểm tra thứ nguyên cho đến khi mảng ngắn nhất hết thứ nguyên
Ví dụ: hai hình dạng sau đây tương thích
import csv
with open["winequality-red.csv", 'r'] as f:
wines = list[csv.reader[f, delimiter=";"]]
import numpy as np
wines = np.array[wines[1:], dtype=np.float]
7Điều này là do độ dài của kích thước theo sau của mảng
print[wines[:3]]
26 là
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
11 và độ dài của kích thước theo sau của mảng print[wines[:3]]
28 là
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
11. Chúng bằng nhau, vì vậy kích thước đó là được. Mảng print[wines[:3]]
28 sau đó không còn phần tử, vì vậy chúng tôi không sao và các mảng tương thích với các phép toánHai hình dạng sau đây cũng tương thích
import csv
with open["winequality-red.csv", 'r'] as f:
wines = list[csv.reader[f, delimiter=";"]]
import numpy as np
wines = np.array[wines[1:], dtype=np.float]
8Kích thước cuối cùng phù hợp và
print[wines[:3]]
26 có độ dài
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
49 trong kích thước đầu tiênHai mảng này không khớp
import csv
with open["winequality-red.csv", 'r'] as f:
wines = list[csv.reader[f, delimiter=";"]]
import numpy as np
wines = np.array[wines[1:], dtype=np.float]
9Độ dài của các thứ nguyên không bằng nhau và không có mảng nào có độ dài thứ nguyên bằng
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
49Có một lời giải thích chi tiết về phát sóng ở đây, nhưng chúng ta sẽ đi qua một vài ví dụ để minh họa nguyên tắc
wines
0wines
1Ví dụ trên không hoạt động vì hai mảng không có thứ nguyên ở cuối phù hợp. Đây là một ví dụ trong đó thứ nguyên cuối cùng khớp với nhau
wines
2wines
3Như bạn có thể thấy,
print[wines[:3]]
34 đã được phát trên mỗi hàng của print[wines[:3]]
35. Đây là một ví dụ với dữ liệu
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20 của chúng tôiwines
4wines
5Các phần tử của
print[wines[:3]]
37 được phát trên mỗi hàng của
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20, vì vậy cột đầu tiên của
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20 có giá trị đầu tiên trong print[wines[:3]]
37 được thêm vào, v.v.Phương thức mảng NumPy
Ngoài các phép toán phổ biến, NumPy còn có một số phương thức mà bạn có thể sử dụng cho các phép tính phức tạp hơn trên mảng. Một ví dụ về điều này là numpy. ndarray. phương pháp tính tổng. Điều này tìm thấy tổng của tất cả các phần tử trong một mảng theo mặc định
wines
6wines
7Tổng tất cả các xếp hạng chất lượng của chúng tôi là
print[wines[:3]]
41. Chúng ta có thể chuyển đối số từ khóa print[wines[:3]]
42 vào phương thức print[wines[:3]]
43 để tìm tổng trên một trục. Nếu chúng ta gọi print[wines[:3]]
43 qua ma trận
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20 và chuyển vào print[wines[:3]]
46, chúng ta sẽ tìm thấy các tổng trên trục đầu tiên của mảng. Điều này sẽ cung cấp cho chúng tôi tổng của tất cả các giá trị trong mỗi cột. Điều này có vẻ ngược lại rằng tổng trên trục đầu tiên sẽ cho chúng ta tổng của mỗi cột, nhưng có một cách để nghĩ về điều này là trục được chỉ định là trục “biến mất”. Vì vậy, nếu chúng tôi chỉ định print[wines[:3]]
46, chúng tôi muốn các hàng biến mất và chúng tôi muốn tìm tổng cho từng trục còn lại trên mỗi hàngwines
8wines
9Chúng tôi có thể xác minh rằng chúng tôi đã tính tổng chính xác bằng cách kiểm tra hình dạng. Hình dạng phải là
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
15, tương ứng với số lượng cột
array[[[ 7.4 , 0.7 , 0. , ..., 0.56 , 9.4 , 5. ],
[ 7.8 , 0.88 , 0. , ..., 0.68 , 9.8 , 5. ],
[ 7.8 , 0.76 , 0.04 , ..., 0.65 , 9.8 , 5. ],
...,
[ 6.3 , 0.51 , 0.13 , ..., 0.75 , 11. , 6. ],
[ 5.9 , 0.645, 0.12 , ..., 0.71 , 10.2 , 5. ],
[ 6. , 0.31 , 0.47 , ..., 0.66 , 11. , 6. ]]]
0
array[[[ 7.4 , 0.7 , 0. , ..., 0.56 , 9.4 , 5. ],
[ 7.8 , 0.88 , 0. , ..., 0.68 , 9.8 , 5. ],
[ 7.8 , 0.76 , 0.04 , ..., 0.65 , 9.8 , 5. ],
...,
[ 6.3 , 0.51 , 0.13 , ..., 0.75 , 11. , 6. ],
[ 5.9 , 0.645, 0.12 , ..., 0.71 , 10.2 , 5. ],
[ 6. , 0.31 , 0.47 , ..., 0.66 , 11. , 6. ]]]
1Nếu chúng ta chuyển vào
print[wines[:3]]
49, chúng ta sẽ tìm thấy tổng trên trục thứ hai của mảng. Điều này sẽ cho chúng ta tổng của mỗi hàng
array[[[ 7.4 , 0.7 , 0. , ..., 0.56 , 9.4 , 5. ],
[ 7.8 , 0.88 , 0. , ..., 0.68 , 9.8 , 5. ],
[ 7.8 , 0.76 , 0.04 , ..., 0.65 , 9.8 , 5. ],
...,
[ 6.3 , 0.51 , 0.13 , ..., 0.75 , 11. , 6. ],
[ 5.9 , 0.645, 0.12 , ..., 0.71 , 10.2 , 5. ],
[ 6. , 0.31 , 0.47 , ..., 0.66 , 11. , 6. ]]]
2______39_______3Có một số phương pháp khác hoạt động giống như phương pháp
print[wines[:3]]
43, bao gồm- - tìm giá trị trung bình của một mảng
- cục mịch. ndarray. std - tìm độ lệch chuẩn của một mảng
- cục mịch. ndarray. min — tìm giá trị nhỏ nhất trong một mảng
- cục mịch. ndarray. max — tìm giá trị lớn nhất trong một mảng
Bạn có thể tìm thấy danh sách đầy đủ các phương thức mảng tại đây
So sánh mảng NumPy
NumPy cho phép kiểm tra xem các hàng có khớp với các giá trị nhất định hay không bằng cách sử dụng các phép so sánh toán học như
print[wines[:3]]
51, print[wines[:3]]
52, print[wines[:3]]
53, print[wines[:3]]
54 và print[wines[:3]]
55. Ví dụ: nếu chúng tôi muốn xem loại rượu nào có xếp hạng chất lượng cao hơn print[wines[:3]]
56, chúng tôi có thể làm điều này
array[[[ 7.4 , 0.7 , 0. , ..., 0.56 , 9.4 , 5. ],
[ 7.8 , 0.88 , 0. , ..., 0.68 , 9.8 , 5. ],
[ 7.8 , 0.76 , 0.04 , ..., 0.65 , 9.8 , 5. ],
...,
[ 6.3 , 0.51 , 0.13 , ..., 0.75 , 11. , 6. ],
[ 5.9 , 0.645, 0.12 , ..., 0.71 , 10.2 , 5. ],
[ 6. , 0.31 , 0.47 , ..., 0.66 , 11. , 6. ]]]
4_______39_______5Chúng tôi nhận được một mảng Boolean cho chúng tôi biết loại rượu nào có xếp hạng chất lượng cao hơn
print[wines[:3]]
56. Chúng ta có thể làm điều gì đó tương tự với các toán tử khác. Chẳng hạn, chúng ta có thể xem liệu có loại rượu nào có xếp hạng chất lượng bằng
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
10
array[[[ 7.4 , 0.7 , 0. , ..., 0.56 , 9.4 , 5. ],
[ 7.8 , 0.88 , 0. , ..., 0.68 , 9.8 , 5. ],
[ 7.8 , 0.76 , 0.04 , ..., 0.65 , 9.8 , 5. ],
...,
[ 6.3 , 0.51 , 0.13 , ..., 0.75 , 11. , 6. ],
[ 5.9 , 0.645, 0.12 , ..., 0.71 , 10.2 , 5. ],
[ 6. , 0.31 , 0.47 , ..., 0.66 , 11. , 6. ]]]
6
array[[[ 7.4 , 0.7 , 0. , ..., 0.56 , 9.4 , 5. ],
[ 7.8 , 0.88 , 0. , ..., 0.68 , 9.8 , 5. ],
[ 7.8 , 0.76 , 0.04 , ..., 0.65 , 9.8 , 5. ],
...,
[ 6.3 , 0.51 , 0.13 , ..., 0.75 , 11. , 6. ],
[ 5.9 , 0.645, 0.12 , ..., 0.71 , 10.2 , 5. ],
[ 6. , 0.31 , 0.47 , ..., 0.66 , 11. , 6. ]]]
7tập hợp con
Một trong những điều mạnh mẽ mà chúng ta có thể làm với mảng Boolean và mảng NumPy là chỉ chọn một số hàng hoặc cột nhất định trong mảng NumPy. Ví dụ: mã bên dưới sẽ chỉ chọn các hàng trong
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20 khi chất lượng vượt quá print[wines[:3]]
60
array[[[ 7.4 , 0.7 , 0. , ..., 0.56 , 9.4 , 5. ],
[ 7.8 , 0.88 , 0. , ..., 0.68 , 9.8 , 5. ],
[ 7.8 , 0.76 , 0.04 , ..., 0.65 , 9.8 , 5. ],
...,
[ 6.3 , 0.51 , 0.13 , ..., 0.75 , 11. , 6. ],
[ 5.9 , 0.645, 0.12 , ..., 0.71 , 10.2 , 5. ],
[ 6. , 0.31 , 0.47 , ..., 0.66 , 11. , 6. ]]]
8
array[[[ 7.4 , 0.7 , 0. , ..., 0.56 , 9.4 , 5. ],
[ 7.8 , 0.88 , 0. , ..., 0.68 , 9.8 , 5. ],
[ 7.8 , 0.76 , 0.04 , ..., 0.65 , 9.8 , 5. ],
...,
[ 6.3 , 0.51 , 0.13 , ..., 0.75 , 11. , 6. ],
[ 5.9 , 0.645, 0.12 , ..., 0.71 , 10.2 , 5. ],
[ 6. , 0.31 , 0.47 , ..., 0.66 , 11. , 6. ]]]
9Chúng tôi chỉ chọn những hàng nơi
print[wines[:3]]
61 chứa giá trị print[wines[:3]]
62 và tất cả các cột. Tập hợp con này làm cho việc lọc các mảng theo các tiêu chí nhất định trở nên đơn giản. Ví dụ, chúng ta có thể tìm kiếm các loại rượu có nhiều cồn và chất lượng cao. Để chỉ định nhiều điều kiện, chúng ta phải đặt từng điều kiện trong ngoặc đơn và tách các điều kiện bằng dấu và [print[wines[:3]]
63]wines.shape
0_______40_______1Chúng ta có thể kết hợp đặt con và gán để ghi đè lên một số giá trị nhất định trong một mảng
wines.shape
2Định hình lại mảng NumPy
Chúng ta có thể thay đổi hình dạng của mảng trong khi vẫn giữ nguyên tất cả các phần tử của chúng. Điều này thường có thể giúp truy cập các phần tử mảng dễ dàng hơn. Định hình lại đơn giản nhất là lật các trục, để hàng trở thành cột và ngược lại. Chúng ta có thể thực hiện điều này với numpy. chức năng chuyển vị
wines.shape
3wines.shape
4Chúng ta có thể sử dụng numpy. hàm ravel để biến một mảng thành biểu diễn một chiều. Về cơ bản, nó sẽ làm phẳng một mảng thành một chuỗi dài các giá trị
wines.shape
5wines.shape
6Đây là một ví dụ mà chúng ta có thể thấy thứ tự của
print[wines[:3]]
64wines.shape
7_______40_______8Cuối cùng, chúng ta có thể sử dụng hàm để định hình lại một mảng thành một hình dạng nhất định mà chúng ta chỉ định. Đoạn mã dưới đây sẽ biến hàng thứ hai của
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20 thành một mảng 2 chiều với
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
53 hàng và print[wines[:3]]
67 cộtwines.shape
9_______0_______00Kết hợp mảng NumPy
Với NumPy, việc kết hợp nhiều mảng thành một mảng thống nhất là rất phổ biến. Chúng ta có thể sử dụng numpy. vstack để xếp nhiều mảng theo chiều dọc. Hãy coi nó giống như các phần tử của mảng thứ hai được thêm vào dưới dạng các hàng mới cho mảng đầu tiên. Chúng ta có thể đọc trong tập dữ liệu
print[wines[:3]]
68 chứa thông tin về chất lượng của rượu vang trắng, sau đó kết hợp nó với tập dữ liệu hiện có của chúng tôi,
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20, chứa thông tin về rượu vang đỏTrong đoạn mã dưới đây, chúng tôi
- Đọc trong
68print[wines[:3]]
- Hiển thị hình dạng của
71print[wines[:3]]
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
01____0_______02Như bạn có thể thấy, chúng tôi có các thuộc tính cho rượu vang
print[wines[:3]]
72. Bây giờ chúng ta có dữ liệu về rượu vang trắng, chúng ta có thể kết hợp tất cả dữ liệu về rượu vangTrong đoạn mã dưới đây, chúng tôi
- Sử dụng hàm
73 để kết hợpprint[wines[:3]]
20 vàimport csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
71print[wines[:3]]
- Hiển thị hình dạng của kết quả
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
03____0_______04Như bạn có thể thấy, kết quả có
print[wines[:3]]
76 hàng, là tổng của số hàng trong
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20 và số hàng trong print[wines[:3]]
78Nếu chúng ta muốn kết hợp các mảng theo chiều ngang, trong đó số hàng không đổi nhưng các cột được nối với nhau, thì chúng ta có thể sử dụng numpy. hàm hstack. Các mảng chúng ta kết hợp cần phải có cùng số hàng để làm việc này
Cuối cùng, chúng ta có thể sử dụng như một phiên bản mục đích chung của
print[wines[:3]]
79 và print[wines[:3]]
73. Nếu chúng ta muốn nối hai mảng, chúng ta chuyển chúng vào print[wines[:3]]
81, sau đó chỉ định đối số từ khóa print[wines[:3]]
42 mà chúng ta muốn nối cùng. Nối dọc theo trục thứ nhất tương tự như print[wines[:3]]
73 và nối dọc theo trục thứ hai tương tự như print[wines[:3]]
79
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
05
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
06Bảng cheat NumPy miễn phí
Nếu bạn muốn tìm hiểu thêm về NumPy, hãy xem khóa học tương tác của chúng tôi về NumPy và Pandas. Bạn có thể đăng ký và thực hành những bài học đầu tiên miễn phí
Bạn cũng có thể muốn nâng kỹ năng NumPy của mình lên một tầm cao mới với bảng cheat NumPy miễn phí của chúng tôi
Đọc thêm
Bây giờ bạn đã hiểu rõ về NumPy và cách áp dụng nó vào tập dữ liệu
Nếu bạn muốn tìm hiểu sâu hơn, đây là một số tài nguyên có thể hữu ích
- NumPy Quickstart — có các ví dụ mã hay và bao gồm hầu hết chức năng NumPy cơ bản
- — một hướng dẫn tuyệt vời về NumPy và các thư viện Python khác
- Visual NumPy Introduction — hướng dẫn sử dụng trò chơi cuộc sống để minh họa các khái niệm NumPy
Trong hướng dẫn tiếp theo của chúng tôi, chúng tôi đi sâu hơn vào Pandas, một thư viện được xây dựng trên NumPy và làm cho việc phân tích dữ liệu trở nên dễ dàng hơn. Nó giải quyết hai trong số những điểm đau lớn nhất đó là
- Bạn không thể trộn nhiều loại dữ liệu trong một mảng
- Bạn phải nhớ loại dữ liệu mà mỗi cột chứa
Học Python đúng cách
Học Python bằng cách viết mã Python từ ngày đầu tiên, ngay trong cửa sổ trình duyệt của bạn. Đó là cách tốt nhất để học Python — hãy tự mình khám phá một trong hơn 60 bài học miễn phí của chúng tôi