Ngày 18 tháng 10 năm 2016 Don lồng bỏ lỡ tờ cheat numpy miễn phí của chúng tôi ở cuối bài đăng này Numpy là một 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 độ công việc của mình và giao diện với các gói khác trong hệ sinh thái Python, như Scikit-Learn, 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ũ hơn gọi là số. Tuổi thọ này có nghĩa là hầu hết mọi phân tích dữ liệu hoặc gói học máy cho Python tận dụng sự vô hiệu của một cách nào đó. Trong hướng dẫn này, chúng tôi sẽ đi qua 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ư
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 giữa
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
09 và
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
10 cho mỗi loại rượu. Điểm chất lượng là 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ử nghiệm vị trí của con người. Khi chúng ta học cách làm việc với Numpy, chúng ta sẽ cố gắng tìm hiểu thêm về chất lượng rượu nhận thức.
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
Các loại rượu vang mà chúng tôi sẽ phân tích là từ khu vực Minho của Bồ Đào Nha.
Dữ liệu được tải xuống từ kho lưu trữ máy học UCI và có sẵn ở đây. Dưới đâ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 nằm trong định dạng mà tôi sẽ gọi là định dạng SSV [giá trị phân tách 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ó các hàng
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
14 trong tệp, bao gồm hàng tiêu đề và các cột
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
15.Trướ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 máy tính xách tay Jupyter.
Danh sách danh sách dữ liệu CSV
Trước khi sử dụng Numpy, trước tiên chúng tôi sẽ cố gắng làm việc với dữ liệu bằng cách sử dụng gói Python và CSV. Chúng ta có thể đọc trong tệp bằng đối tượng CSV.Reader, cho phép chúng ta đọc và chia tất cả nội dung từ tệp SSV.
Trong mã dưới đây, chúng tôi:
- Nhập thư viện
16.import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Mở tệp
12.import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Với tệp mở, tạo một đối tượng
18 mới.import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Truyền trong đối số từ khóa
19 để đảm bảo rằng các bản ghi được phân chia trên ký tự dấu chấm phẩy thay vì ký tự dấu phẩy mặc định.import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Truyền trong đối số từ khóa
- Gọi loại danh sách để lấy tất cả các hàng từ tệp.
- Gán kết quả cho
20.import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Với tệp mở, 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 trong dữ liệu, chúng tôi có thể in ra các hàng
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
11 đầu tiên:print[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 danh sách được biểu diễn dưới dạng chuỗi, điều này sẽ khiến việc thực hiện tính toán khó khăn hơn.
Chúng tôi sẽ định dạng dữ liệu vào một bảng để giúp xem dễ dàng hơn:
7.4 | 0.70 | 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.20 | 0.68 | 9.8 | 5 |
Như bạn có thể thấy từ bảng trên, chúng tôi đã đọc trong ba hàng, trong số đó có 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, thứ hai là
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
23, v.v. Chúng ta có thể tìm thấy
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
24 trung bình của rượu vang. 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 một chiếc phao.
- Gán tất cả các phần tử được trích xuất cho danh sách
25.import 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 để nhận giá trị trung bình.import 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 tính toán mà chúng tôi muốn, mã khá phức tạp và nó đã giành được rất 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 tôi có thể sử dụng Numpy để làm cho việc làm việc với dữ liệu của chúng tôi dễ dàng hơn.
Mảng 2 chiều numpy
Với Numpy, chúng tôi làm việc với các mảng đa chiều. Chúng tôi sẽ đi sâu vào tất cả các loại mảng đa chiều có thể có sau này, nhưng bây giờ, chúng tôi sẽ tập trung vào các mảng 2 chiều. Một mảng 2 chiều còn được gọi là ma trận, và là thứ bạn nên quen thuộc. Trên thực tế, nó chỉ là một cách suy nghĩ khác về một 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 dưới đây, 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:
7.4 | 0.70 | 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.20 | 0.68 | 9.8 | 5 |
Nếu chúng tôi chọn phần tử ở hàng thứ nhất 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=';']]
30.Trong một mảng numpy, số lượng kích thước được gọi là thứ hạng và mỗi chiều được gọi là 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 điều cơ bản của ma trận, hãy để xem cách chúng ta có thể nhận được từ danh sách danh sách của chúng ta đến một mảng numpy.
Tạo ra một mảng numpy
Chúng ta có thể tạo một mảng numpy bằng cách sử dụng hàm numpy.array. Nếu chúng ta chuyển trong danh sách các danh sách, nó sẽ tự động tạo một mảng numpy với cùng số lượng hàng và cột. Bởi vì chúng tôi muốn tất cả các yếu tố trong mảng là các yếu tố nổi để tính toán dễ dàng, chúng tôi sẽ rời khỏi 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 tính toán 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 vang, chúng tôi cần các yếu tố để tất cả đều nổi.Trong mã dưới đây, chúng tôi:
- Nhập gói
32.import 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, chuyển đổi nó thành một mảng numpy.import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Loại trừ hàng tiêu đề với việc 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 một chiếc phao. Chúng tôi 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ày.import 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 mã trên và xem những gì 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 numpy:wines
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 chúng tôi bằng cách sử dụng thuộc tính hình dạng của các 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ó một loạt các phương pháp mà bạn có thể sử dụng để tạo ra các mảng numpy. Để bắt đầu, bạn có thể tạo một mảng trong đó mọi phần tử bằng không. Mã dưới đây sẽ tạo một mảng với các hàng
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
11 và các cột
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
39, 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.zeros:
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=';']]
2Nó rất hữu ích để tạo ra một mảng với tất cả các phần tử bằng không trong các trường hợp khi bạn cần một mảng có kích thước cố định, nhưng don lồng 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 sử dụng numpy.random.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 đầ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 với các mảng mẫu.
Sử dụng Numpy để đọc trong các tệp
Nó có thể sử dụng Numpy để đọc trực tiếp CSV hoặc các tệp khác vào các mảng. Chúng ta có thể làm điều này bằng cách sử dụng hàm Numpy.GenFromTXT. Chúng tôi có thể sử dụng nó để đọc trong dữ liệu ban đầu của chúng tôi về Red Wine.
Trong mã dưới đây, chúng tôi:
- Nhập gói
32.import 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, chuyển đổi nó thành một mảng numpy.import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Loại trừ hàng tiêu đề với việc cắt danh sách.
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
5Chỉ định đối số từ khóa
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
35 để đảm bảo mỗi phần tử được chuyển đổi thành một chiếc phao. Chúng tôi 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ày.Hãy thử chạy mã trên và xem những gì 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 numpy:
7.4 | 0.70 | 0.00 | 1.9 | 0.076 | 11 | 34 | 0.9978 | 3.51 | 0.56 | 9.4 | 5 |
7.8 | 0.88 | 0.00 | 2.6 | 0.098 | 25 | 67 | 0.9968 | 3.20 | 0.68 | 9.8 | 5 |
7.8 | 0.76 | 0.04 | 2.3 | 0.092 | 15 | 54 | 0.9970 | 3.26 | 0.65 | 9.8 | 5 |
11.2 | 0.28 | 0.56 | 1.9 | 0.075 | 17 | 60 | 0.9980 | 3.16 | 0.58 | 9.8 | 6 |
7.4 | 0.70 | 0.00 | 1.9 | 0.076 | 11 | 34 | 0.9978 | 3.51 | 0.56 | 9.4 | 5 |
Chúng tôi có thể kiểm tra số lượng hàng và cột trong dữ liệu của chúng tôi bằng cách sử dụng thuộc tính hình dạng của các mảng Numpy:
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
6
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
7Phương pháp tạo mảng numpy thay thế
Cắt các 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ể làm điều đó 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]. Một đại tràng chỉ ra rằng chúng tôi muốn chọn tất cả các yếu tố từ chỉ mục bắt đầu lên đến nhưng không bao gồm chỉ mục kết thúc. Điều này còn được gọi là một lát cắt:
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
8
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
9Giống như với việc cắt danh sách, nó có thể bỏ qua
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
09 để chỉ lấy tất cả các yếu tố từ đầu đến phần tử
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
11:print[wines[:3]]
0
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
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 yếu tố, từ phần đầu tiên đến cuối cùng. Chúng tôi chỉ định điều này bằng cách chỉ sử dụng ruột kết [
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
59], không có chỉ số bắt đầu hoặc kết thúc. Mã dưới đây sẽ chọn toàn bộ cột thứ tư:print[wines[:3]]
2print[wines[:3]]
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 đưa lập chỉ mục của mình đến cực đoan, chúng ta có thể chọn toàn bộ mảng bằng hai dấu 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 tuyệt vời, nhưng không có nhiều ứng dụng tốt:print[wines[:3]]
6print[wines[:3]]
7Gán các giá trị cho các mảng numpy
Chúng tôi cũng có thể sử dụng lập chỉ mục để gán các giá trị cho các phần tử nhất định trong các mảng. Chúng ta có thể làm điều này bằng cách gán trực tiếp vào 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 đè toàn bộ cột, chúng ta có thể làm điều này:
print[wines[:3]]
9Mã trên ghi đè 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=';']]
64.Mảng numpy 1 chiều
Cho đến nay, chúng tôi đã làm việc với các 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 các mảng đa chiều. Một trong những loại mảng đa chiều phổ biến nhất là mảng 1 chiều hoặc vectơ. Như bạn có thể nhận thấy ở trên, khi chúng tôi cắt
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20, chúng tôi đã lấy một mảng 1 chiều. Một mảng 1 chiều chỉ cần một chỉ mục duy nhất để truy xuất một phần tử. Mỗi hàng và cột trong một mảng 2 chiều là một mảng 1 chiều. Giống như một danh sách các danh sách tương tự như một mảng 2 chiều, một danh sách duy nhất tương tự như một mảng 1 chiều. Nếu chúng ta cắt rượu và chỉ lấy hàng thứ ba, chúng ta sẽ nhận được một 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, cách thức
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 ta có thể truy xuất các yếu 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. 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, chẳng hạn như numpy.random.rand, có thể được sử dụng với các mảng đa chiều. Tại đây, cách thức 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 chúng tôi gọi
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
71, chúng tôi đã vượt qua hình dạng cho một 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 tôi đã vượt qua một hình dạng cho một 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 chiều. 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 các hàng
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
10 và cột
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
10. 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 các phần tử
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
10.Trường hợp Numpy trở nên phức tạp hơn khi chúng ta bắt đầu đối phó với các mảng có nhiều hơn kích thước
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
53.Mảng numpy n-chiều
Điều này không xảy ra cực kỳ thường xuyên, nhưng có những trường hợp khi bạn muốn đối phó với các mảng có kích thước lớn hơn
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
11. Một cách để nghĩ về điều này là một danh sách các danh sách danh sách. Hãy nói rằng 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 phần tư 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
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
79 vào tháng 1,
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
80 vào tháng Hai, 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ể lấy thu nhập từ tháng 1 bằng cách gọi
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 kết quả trong cả một quý, chúng tôi có thể gọi
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 tôi 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 nữa thì sao? Chúng ta phải thêm một chiều thứ ba:[['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ể lấy thu nhập từ tháng 1 năm đầu tiên bằng cách gọi
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
84. Bây giờ chúng tôi cần ba chỉ mục để truy xuất một yếu tố duy nhất. Một mảng ba chiều trong Numpy là giống nhau. 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 đó nhận được thu nhập cho tháng 1 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 làm việc chính xác theo cách tương tự với một 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 ta muốn nhận thu nhập cho tháng 1 trong tất cả các năm, chúng ta 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 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]
6Thêm nhiều kích thước có thể giúp việc truy vấn dữ liệu của bạn dễ dàng hơn nhiều nếu nó được tổ chức theo một cách nhất định. Khi chúng ta đi từ các mảng 3 chiều đến các mảng 4 chiều và lớn hơn, các thuộc tính tương tự đượ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.
Các loại 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 yếu tố của một loại 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ị nổi. Numpy lưu trữ các giá trị bằng cách sử dụng các loại dữ liệu của riêng mình, khác với các loại 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 cốt lõi của Numpy được viết bằng ngôn ngữ lập trình có tên C, lưu trữ dữ liệu khác với các loại dữ liệu Python. Các kiểu dữ liệu numpy Bản đồ giữa Python và C, cho phép chúng tôi sử dụng các mảng không có gì mà không có bất kỳ trở ngại chuyển đổi nào.Bạn có thể tìm thấy loại dữ liệu của một 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 một danh sách đầy đủ các loại dữ liệu Numpy ở đây, nhưng đây là một vài loại quan trọng:
87 - Dữ liệu điểm nổi số.import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
92 - Dữ liệu số nguyên.import 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 - Đối tượng Python.import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
Các loại dữ liệu cũng kết thúc bằng một hậu tố cho biết số lượng bộ nhớ họ chiếm. Vì vậy,
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
95 là loại 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à loại dữ liệu float
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
97 bit.Chuyển đổi các loại dữ liệu
Bạn có thể sử dụng phương thức numpy.ndarray.Arype để chuyển đổi một mảng thành một loại khác. Phương thức thực sự sẽ sao chép mảng và trả về một mảng mới với kiểu dữ liệu được 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 sang kiểu dữ liệu
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
92:qualities =
[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 không có gì 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 các loại dữ liệu vô dụng.Chúng ta có thể kiểm tra thuộc tính tên của DTYPE của mảng kết quả để xem kiểu dữ liệu nào đã ánh xạ mảng kết quả thành:
5.6360225140712945
15.6360225140712945
2Mảng đã được chuyển đổi thành 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 không gian 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 về cách lưu trữ mảng 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
35.6360225140712945
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 nó đơn giản để thực hiện các hoạt động toán học trên các mảng. Đây là một trong những lợi thế chính của Numpy, và làm cho nó khá dễ dàng để thực hiện tính toán.
Toán một mảng duy nhất
Nếu bạn thực hiện bất kỳ hoạt động toán học 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à giá trị, nó sẽ áp dụng hoạt động cho từng phần tử trong mảng.Hãy nói rằng chúng tôi muốn thêm
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
10 điểm vào mỗi điểm chất lượng vì chúng tôi say rượu và cảm thấy hào phóng. Ở đây, cách thức chúng tôi làm điều đó:5.6360225140712945
75.6360225140712945
8Lưu ý rằng hoạt động trên won đã 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 yếu tố trong cột chất lượng của rượu vang.Nếu thay vào đó 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 ta 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 ta có thể làm điều đó như thế này:
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
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]
2Toán học nhiều mảng
Nó cũng có thể thực hiện các hoạt động toán học giữa các mảng. Điều này sẽ áp dụng hoạt động cho các cặp phần tử. Ví dụ: nếu chúng ta 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ó, thì đây là những gì chúng ta 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
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]
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ử thứ nhất trong mảng thứ nhất được thêm vào phần tử thứ nhất trong mảng thứ hai, phần thứ hai so với thứ hai, v.v.Chúng ta cũng có thể sử dụng điều này để nhân mảng. Hãy nói rằng chúng tôi muốn chọn một loại rượu tối đa hóa nồng độ cồn và chất lượng [chúng tôi muốn say rượu, nhưng chúng tôi rất đẳng cấp]. Chúng tôi đã 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 rượu với 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 chung [
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ảng.Phát thanh truyền hình
Trừ khi các mảng mà bạn hoạt động trên có cùng kích thước, nó không thể thực hiện các hoạt động theo nguyên tố. Trong các trường hợp như thế này, Numpy thực hiện phát sóng để cố gắng phù hợp với các yếu tố. Về cơ bản, phát sóng liên quan đến một vài 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 kích thước bằng nhau, hoặc một trong các kích thước có độ dài
49, thì chúng ta sẽ tiếp tục đi.import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Nếu chiều dài kích thước không bằng nhau và không có kích thước nào có độ dài
49, thì có một lỗi.import csv with open['winequality-red.csv', 'r'] as f: wines = list[csv.reader[f, delimiter=';']]
- Nếu chiều dài kích thước bằng nhau, hoặc một trong các kích thước có độ dài
- Tiếp tục kiểm tra kích thước cho đến khi mảng ngắn nhất nằm ngoài kích thước.
Ví dụ, hai hình dạng sau đây là 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 chiều dài của kích thước dấu 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à chiều dài của kích thước dấu 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. Họ bằng nhau, vì vậy kích thước đó là ổn. Mảng print[wines[:3]]
28 sau đó là các yếu tố, vì vậy chúng tôi không sao và các mảng tương thích cho các hoạt động toán học.Hai 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 chiều đầu tiên.Hai mảng này không phù hợp với nhau:
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 kích thước không bằng nhau và không có mảng nào có chiều dài kích thước bằng
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
49.Có một lời giải thích chi tiết về phát sóng ở đây, nhưng chúng tôi sẽ trải qua một vài ví dụ để minh họa cho nguyên tắc này:
wines
0wines
1Ví dụ trên đã không hoạt động vì hai mảng don don có một kích thước phù hợp. Dưới đây, một ví dụ trong đó kích thước cuối cùng phù hợp:
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. Dưới đây, 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ôi:wines
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, do đó, 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 nó, v.v.Phương pháp mảng numpy
Ngoài các hoạt động toán học phổ biến, Numpy cũng có một số phương pháp mà bạn có thể sử dụng để tính toán phức tạp hơn trên các mảng. Một ví dụ về điều này là phương thức numpy.ndarray.sum. Đ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 số 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 trên ma trận
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20 và vượt qua trong print[wines[:3]]
46, chúng ta sẽ tìm thấy số tiền trên trục đầu tiên của mảng. Điều này sẽ cung cấp cho chúng ta 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 các tổng trong trục đầu tiên sẽ cung cấp cho chúng ta tổng của mỗi cột, nhưng một cách để suy nghĩ về điều này là trục được chỉ định là một người đi xa. 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 số cho mỗi trục còn lại trên mỗi hàng:wines
8wines
9Chúng tôi có thể xác minh rằng chúng tôi đã thực hiện 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 tôi vượt qua trong
print[wines[:3]]
49, chúng tôi sẽ tìm thấy số tiền trên trục thứ hai của mảng. Điều này sẽ cung cấp cho chúng tôi 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
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. ]]]
3Có một số phương pháp khác hoạt động như phương pháp
print[wines[:3]]
43, bao gồm:- numpy.ndarray.mean - tìm thấy giá trị trung bình của một mảng.
- numpy.ndarray.std - Tìm độ lệch chuẩn của một mảng.
- numpy.ndarray.min - Tìm giá trị tối thiểu trong một mảng.
- numpy.ndarray.max - Tìm giá trị tối đa trong một mảng.
Bạn có thể tìm thấy một danh sách đầy đủ các phương thức mảng ở đây.
So sánh mảng numpy
Numpy có thể kiểm tra xem các hàng có khớp với các giá trị nhất định bằng cách sử dụng các hoạt động 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 ta 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 ta 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
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. ]]]
5Chúng tôi nhận được một mảng boolean cho chúng tôi biết loại rượu vang nào có xếp hạng chất lượng lớn hơn
print[wines[:3]]
56. Chúng ta có thể làm một cái gì đó tương tự với các nhà khai thác khác. Chẳng hạn, chúng ta có thể xem liệu có bất kỳ 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
Một trong những điều mạnh mẽ chúng ta có thể làm với một mảng boolean và một mảng numpy chỉ chọn các hàng hoặc cột nhất định trong mảng numpy. Ví dụ: mã dưới đây 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 trong đó chất lượng trên 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 các hàng trong đó
print[wines[:3]]
61 chứa giá trị print[wines[:3]]
62 và tất cả các cột. Tập hợp này làm cho nó đơn giản để lọc các mảng cho một số tiêu chí nhất định. Ví dụ, chúng ta có thể tìm kiếm rượu vang có nhiều rượu 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à các điều kiện riêng biệt với ampersand [print[wines[:3]]
63]:wines.shape
0wines.shape
1Chúng ta có thể kết hợp tập hợp 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 các mảng trong khi vẫn bảo tồn tất cả các yếu tố của chúng. Điều này thường có thể làm cho nó dễ dàng hơn để truy cập các yếu tố mảng. Việc định hình lại đơn giản nhất là lật các trục, do đó cá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 chức năng Numpy.Transpose:
wines.shape
3wines.shape
4Chúng ta có thể sử dụng hàm numpy.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
6Dưới đây, một ví dụ mà chúng ta có thể thấy thứ tự của
print[wines[:3]]
64:wines.shape
7 wines.shape
8Cuối cùng, chúng ta có thể sử dụng chức năng Numpy.Reshape để định hình lại một mảng thành một hình dạng nhất định mà chúng tôi chỉ định. 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ảng 2 chiều với các hàng
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
53 và cột print[wines[:3]]
67:wines.shape
9
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
00Kết hợp các mảng numpy
Với Numpy, nó rất phổ biến để kết hợp nhiều mảng thành một mảng thống nhất duy nhất. Chúng ta có thể sử dụng numpy.vstack để xếp theo chiều dọc nhiều mảng. Hãy nghĩ về nó giống như các mảng thứ hai, các mục được thêm vào dưới dạng hàng mới vào mảng đầu tiên. Chúng ta có thể đọc trong bộ dữ liệu
print[wines[:3]]
68 có 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 bộ dữ liệu hiện tại 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 mã dưới đây, chúng tôi:
- Đọc trong
68.print[wines[:3]]
- Hiển thị hình dạng của
71.print[wines[:3]]
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
01
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
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 rượu vang trắng, chúng ta có thể kết hợp tất cả các dữ liệu rượu vang.Trong mã dưới đây, chúng tôi:
- Đọc trong
68.print[wines[:3]]
- Hiển thị hình dạng của
71.print[wines[:3]]
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
03
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
04Như 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 rượu vang trắng, chúng ta có thể kết hợp tất cả các dữ liệu rượu vang.Sử dụng hàm
print[wines[:3]]
73 để kết hợp
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20 và print[wines[:3]]
71.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=';']]
05
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
06Như bạn có thể thấy, kết quả có các hàng print[wines[:3]]
76, là tổng số lượng hàng trong
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
20 và số lượng hàng trong print[wines[:3]]
78.
print[wines[:3]]
import csv
with open['winequality-red.csv', 'r'] as f:
wines = list[csv.reader[f, delimiter=';']]
print[wines[:3]]
Nếu chúng ta muốn kết hợp các mảng theo chiều ngang, trong đó số lượng hàng không đổi, nhưng các cột được nối, thì chúng ta có thể sử dụng hàm Numpy.hstack. Các mảng chúng tôi kết hợp cần phải có cùng số lượng hàng để hoạt động này.
Cuối cùng, chúng ta có thể sử dụng numpy.concatenate 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 tôi muốn kết hợp hai mảng, chúng tôi sẽ 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 tôi muốn kết nối. Kết hợp 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:Tờ Cheat Numpy miễn phí
Nếu bạn quan tâm đến việc 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 hiện các bài học đầu tiên miễn phí.
Bạn cũng có thể muốn đưa các kỹ năng numpy của bạn lên một tầm cao mới với tờ cheat numpy miễn phí của chúng tôi!
- Đọc thêm
- Bây giờ bạn nên nắm bắt tốt Numpy và cách áp dụng nó cho một bộ dữ liệu.
- Nếu bạn muốn đi 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ã tốt và bao gồm các chức năng numpy cơ bản nhất.
- Hướng dẫn Python Numpy - Một hướng dẫn tuyệt vời về Numpy và các thư viện Python khác.
- Visual Numpy Giới thiệu - Một 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 xây dựng trên Numpy và làm cho 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 có thể trộn lẫ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.