Hướng dẫn create a table in python numpy - tạo một bảng trong python numpy

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ư


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 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.

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
    
    import csv
    with open['winequality-red.csv', 'r'] as f:
        wines = list[csv.reader[f, delimiter=';']]
    
    16.
  • Mở tệp
    
    import csv
    with open['winequality-red.csv', 'r'] as f:
        wines = list[csv.reader[f, delimiter=';']]
    
    12.
    • 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=';']]
      
      18 mới.
      • Truyền trong đối số từ khóa
        
        import csv
        with open['winequality-red.csv', 'r'] as f:
            wines = list[csv.reader[f, delimiter=';']]
        
        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.
    • 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
      
      import csv
      with open['winequality-red.csv', 'r'] as f:
          wines = list[csv.reader[f, delimiter=';']]
      
      20.

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:

CỐ ĐỊNH ACITYĐộ axit dễ bay hơiaxit citricĐường còn lạicloruaDioxide lưu huỳnh miễn phíTổng lưu huỳnh dioxideTỉ trọngPHsunfatrượu biaphẩm chất
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
    
    import csv
    with open['winequality-red.csv', 'r'] as f:
        wines = list[csv.reader[f, delimiter=';']]
    
    25.
  • Chia tổng của tất cả các phần tử trong
    
    import csv
    with open['winequality-red.csv', 'r'] as f:
        wines = list[csv.reader[f, delimiter=';']]
    
    25 cho tổng số phần tử trong
    
    import csv
    with open['winequality-red.csv', 'r'] as f:
        wines = list[csv.reader[f, delimiter=';']]
    
    25 để nhận giá trị trung bình.
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:

CỐ ĐỊNH ACITYĐộ axit dễ bay hơiaxit citricĐường còn lạicloruaDioxide lưu huỳnh miễn phíTổng lưu huỳnh dioxideTỉ trọngPHsunfatrượu biaphẩm chất
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
    
    import csv
    with open['winequality-red.csv', 'r'] as f:
        wines = list[csv.reader[f, delimiter=';']]
    
    32.
  • Chuyển danh sách các danh sách
    
    import csv
    with open['winequality-red.csv', 'r'] as f:
        wines = list[csv.reader[f, delimiter=';']]
    
    20 vào hàm
    
    import 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.
    • Loại trừ hàng tiêu đề với việc cắt danh sách.
    • Chỉ đị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.

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=';']]
0

Phươ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=';']]
2

Nó 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=';']]
4

Tạ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
    
    import csv
    with open['winequality-red.csv', 'r'] as f:
        wines = list[csv.reader[f, delimiter=';']]
    
    32.
  • Chuyển danh sách các danh sách
    
    import csv
    with open['winequality-red.csv', 'r'] as f:
        wines = list[csv.reader[f, delimiter=';']]
    
    20 vào hàm
    
    import 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.
  • 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=';']]
5

Chỉ đị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=';']]
7

Phươ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=';']]
9

Giố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=';']]
9

Chú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]]
2
print[wines[:3]]
3

Chú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]]
4
print[wines[:3]]
5

Nế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]]
6
print[wines[:3]]
7

Gá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]]
8

Chú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]]
9

Mã 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']]
1

Chú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']]
3

Hầ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']]
5

Trướ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']]
6

Cử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']]
7

Chú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']]
8

Chú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']]
9
qualities =
[float[item[-1]] for item in wines[1:]]
sum[qualities] / len[qualities]
0

Chú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]
1
qualities =
[float[item[-1]] for item in wines[1:]]
sum[qualities] / len[qualities]
2

Lậ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]
3
qualities =
[float[item[-1]] for item in wines[1:]]
sum[qualities] / len[qualities]
4

Nế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]
5
qualities =
[float[item[-1]] for item in wines[1:]]
sum[qualities] / len[qualities]
6

Thê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]
7
qualities =
[float[item[-1]] for item in wines[1:]]
sum[qualities] / len[qualities]
8

Numpy 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:

  • 
    import csv
    with open['winequality-red.csv', 'r'] as f:
        wines = list[csv.reader[f, delimiter=';']]
    
    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.

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]
9
5.6360225140712945
0

Như 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
1
5.6360225140712945
2

Mả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
3
5.6360225140712945
4

Bạn có thể sử dụng chúng trực tiếp để chuyển đổi giữa các loại:

5.6360225140712945
5
5.6360225140712945
6

Hoạ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
7
5.6360225140712945
8

Lư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
9
5.6360225140712945
8

Tấ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]
2

Toá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]
4

Lư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]
6

Tấ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
      
      import csv
      with open['winequality-red.csv', 'r'] as f:
          wines = list[csv.reader[f, delimiter=';']]
      
      49, thì chúng ta sẽ tiếp tục đi.
    • 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
      
      import csv
      with open['winequality-red.csv', 'r'] as f:
          wines = list[csv.reader[f, delimiter=';']]
      
      49, thì có một lỗ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]
8

Kí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
0
wines
1

Ví 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
2
wines
3

Như 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
4
wines
5

Cá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
6
wines
7

Tổ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
8
wines
9

Chú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. ]]]
1

Nế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. ]]]
3

Có 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. ]]]
5

Chú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. ]]]
7

Tậ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. ]]]
9

Chú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
0
wines.shape
1

Chú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
3
wines.shape
4

Chú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
5
wines.shape
6

Dướ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
8

Cuố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=';']]
00

Kế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
    print[wines[:3]]
    68.
  • Hiển thị hình dạng của
    print[wines[:3]]
    71.

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=';']]
02

Như 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
    print[wines[:3]]
    68.
  • Hiển thị hình dạng của
    print[wines[:3]]
    71.

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=';']]
04

Như 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=';']]
06

Như 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.

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.

Làm cách nào để sử dụng Numpy trong Python?

Tạo một mảng numpy..
Nhập gói Numpy ..
Truyền danh sách các danh sách rượu vang vào hàm mảng, chuyển đổi nó thành một mảng numpy. Loại trừ hàng tiêu đề với việc cắt danh sách. Chỉ định đối số từ khóa DTYPE để đảm bảo mỗi phần tử được chuyển đổi thành một float. Chúng ta sẽ đi sâu hơn về những gì DTYPE sau này ..

Làm cách nào để tạo một tệp CSV numpy?

Bạn có thể lưu các mảng Numpy của mình vào các tệp CSV bằng hàm savetxt [].Hàm này lấy tên tệp và mảng làm đối số và lưu mảng vào định dạng CSV.Bạn cũng phải chỉ định dấu phân cách;Đây là ký tự được sử dụng để tách từng biến trong tệp, phổ biến nhất là dấu phẩy.using the savetxt[] function. This function takes a filename and array as arguments and saves the array into CSV format. You must also specify the delimiter; this is the character used to separate each variable in the file, most commonly a comma.

Làm cách nào để tạo một mảng trong Numpy?

Để tạo một mảng numpy, bạn có thể sử dụng hàm np.array [].Tất cả những gì bạn cần làm để tạo một mảng đơn giản là truyền một danh sách cho nó.Nếu bạn chọn, bạn cũng có thể chỉ định loại dữ liệu trong danh sách của mình.use the function np.array[] . All you need to do to create a simple array is pass a list to it. If you choose to, you can also specify the type of data in your list.

Làm cách nào để tải dữ liệu vào một mảng numpy?

Để nhập các tệp văn bản vào các mảng Numpy, chúng tôi có hai chức năng trong Numpy:..
Numpy.LoadTXT [] - Được sử dụng để tải dữ liệu tệp văn bản ..
Numpy.GENFROMTXT [] - Được sử dụng để tải dữ liệu từ tệp văn bản, với các giá trị bị thiếu được xử lý như được xác định ..

Bài Viết Liên Quan

Chủ Đề