Np where là gì

5 hàm mảng numpy bị đánh giá thấp mà bạn nên biết.

Các chức năng khó hiểu với các ví dụ thời gian thực

Ảnh của Chris Liverani trên Unsplash

Vậy Numpy là gì? Numpy là viết tắt của Numerical Python. Nó là một gói tính toán khoa học bằng Python [từ trang web numpy]. Thư viện Numpy giúp chúng ta tạo, thao tác, thao tác định hình, sắp xếp, lựa chọn và nhiều thứ khác trên mảng n chiều. Numpy là một thư viện rất mạnh và có tốc độ cực nhanh so với các danh sách của Python.

Tôi sẽ cố gắng giải thích về 5 thói quen [chức năng] numpy bị đánh giá thấp với một số ví dụ trong thế giới thực.

Các chức năng mà tôi sẽ đề cập trong sổ tay này là:

  • np.reshape [] - thao tác hình dạng
  • np.where [] - thao tác tìm kiếm
  • np.stack [] - thao tác hình dạng
  • np.argmax [] - thao tác tìm kiếm
  • np.cumsum [] - phép toán thống kê

Danh sách các chức năng được giải thích

  • function1 = np.reshape [] => để thay đổi hình dạng của mảng
  • function2 = numpy.where [] => cho các hoạt động giống như SQL
  • function3 = numpy.stack [] => để xếp chồng nhiều mảng => dùng trong xử lý ảnh thời gian thực
  • function4 = numpy.argmax [] => để tìm ra các chỉ số của giá trị lớn nhất trong một mảng
  • function5 = numpy.cumsum [] => để tính tổng số đang chạy => được sử dụng trong các ứng dụng tài chính và bán hàng

Hàm 1 - np.reshape

Tình huống 1: thu thập nhiệt độ phòng

Giả sử rằng chúng tôi đang thu thập nhiệt độ phòng trong nhà của chúng tôi mỗi ngày sáu giờ một lần [tức là 4 lần trong một ngày].

Bây giờ từ hình ảnh dưới đây cho phép nói rằng nhiệt độ thu được trong một ngày là: [C = c độ, F = fahrenheit]

  • C, F, C, F, C, F, C, F

Để làm điều đó, chúng tôi sử dụng hàm reshape [] [vị trí lẻ = c, vị trí chẵn = fahrenheit].

temperatures = [14, 57.2, 7, 44.6, 18, 66.4, 25, 77] new_temperatures = np.reshape[temperatures, newshape=[4,2]] new_temperatures Output: array[[[14. , 57.2], [ 7. , 44.6], [18. , 66.4], [25. , 77.]]]

Chúng tôi đã chuyển đổi mảng 1 chiều [danh sách] thành mảng 2 chiều bằng cách sử dụng newshape = [4,2] tức là 4 hàng và 2 cột.

print['Below are the temperatures recorded today:'] for c,f in new_temperatures: print[f'Celsius: {c}, Fahrenheit: {f}'] Output: Below are the temperatures recorded today: Celsius: 14.0, Fahrenheit: 57.2 Celsius: 7.0, Fahrenheit: 44.6 Celsius: 18.0, Fahrenheit: 66.4 Celsius: 25.0, Fahrenheit: 77.0

Giờ đây, người dùng cuối có thể trích xuất các phần tử của mảng theo cặp để thực hiện phân tích nhanh nhiệt độ được ghi lại.

Tình huống 2: thu thập thời gian vòng đua của các tay đua F1

Giả sử rằng chúng ta đang thu thập thời gian thực hiện của năm tay đua F1 để hoàn thành mỗi vòng đua [tính bằng phút].

Dữ liệu thu thập được ở định dạng danh sách danh sách.

lap_times = [ [3.1, 2.73, 2.64, 3.05, 2.99], [2.71, 2.99, 2.94, 2.94, 2.58], [3.01, 3.73, 2.74, 3.86, 3.62] ] all_lap_times = np.reshape[lap_times, newshape=-1] all_lap_times Output: array[[3.1 , 2.73, 2.64, 3.05, 2.99, 2.71, 2.99, 2.94, 2.94, 2.58, 3.01, 3.73, 2.74, 3.86, 3.62]] all_lap_times.shape Output: [15,]

Nếu bạn có một số kinh nghiệm về SQL, thì Numpy's where tương tự như mệnh đề WHERE trong SQL. Ngoại trừ nó hoạt động hơi khác một chút.

Numpy's nơi hoạt động như thế này:

  • np.where [điều kiện, nếu có thì đưa ra đầu ra này, nếu không thì đưa ra đầu ra này]

Ví dụ: np.where [x> 10, A, B] => ở đây nếu x lớn hơn 10 thì A được trả về là đầu ra của chúng ta, nếu sai B được trả về là đầu ra của chúng ta.

Các ví dụ dưới đây mà tôi đề cập là về phân tích cricket.

Tôi là một fan hâm mộ lớn của môn thể thao này, Cricket . Tôi sẽ lấy một tập dữ liệu ví dụ chứa số lần chạy do Sachin Tendulkar và Rahul Dravid ghi được trong một trận đấu mà Ấn Độ đã thi đấu.

Lưu ý: Tôi không sở hữu tập dữ liệu này. Tôi đã tải xuống tài nguyên này từ liên kết này://drive.google.com/file/d/1lBEeQ9iycLmQX9LkA8gq2Tm1Utd9sKu8/view?usp=sharing

Tập dữ liệu trông giống như sau:

Tệp .tsv tương tự như tệp CSV nhưng được phân tách bằng TAB thay vì COMMA [,], đó là lý do tại sao phần mở rộng tệp là .tsv

Ý nghĩa của các cột:

  • Sachin = số lần chạy do Sachin ghi được
  • Dravid = số lần chạy được Dravid ghi
  • Ấn Độ = tổng số lần chạy mà Ấn Độ đã thực hiện trong trận đấu đó
# Before we perform our numpy operations let us load our dataset in a numpy array import numpy data = np.loadtxt["//drive.google.com/file/d/1lBEeQ9iycLmQX9LkA8gq2Tm1Utd9sKu8/view?usp=sharing", skiprows=1] data.shape Output: [225, 4] # Example 1 - find number of centuries made by Sachin and Dravid # Sachin - column 1 [0, 1, 2] sachin_centuries = np.where[data[:, 1] >= 100] # Dravid - column 2 [0, 1, 2] dravid_centuries = np.where[data[:, 2] >= 100] print[sachin_centuries] # output returned is the index of elements where sachin's score was >= 100 print[dravid_centuries] # output returned is the index of elements where dravid's score was >= 100 Output: [array[[ 0, 4, 22, 30, 37, 44, 47, 56, 57, 64, 68, 94, 115, 116, 134, 148, 159, 166, 175, 177, 181, 182, 204, 208, 210, 221], dtype=int64],] [array[[ 5, 11, 21, 37, 60, 88, 205, 208], dtype=int64],]
  • Lưu ý rằng các kết quả đầu ra ở trên trả về một Tuple với danh sách các chỉ mục trong đó số lần chạy là 100 hoặc hơn [tức là một thế kỷ]
  • Để truy cập vào mảng, chúng tôi sử dụng đầu ra [0] vì chỉ có một mảng bên trong Tuple
sachin_centuries[0] Output: array[[ 0, 4, 22, 30, 37, 44, 47, 56, 57, 64, 68, 94, 115, 116, 134, 148, 159, 166, 175, 177, 181, 182, 204, 208, 210, 221], dtype=int64] Để tìm tổng số thế kỷ, chúng tôi sử dụngprint[f'Total centuries by Sachin: {sachin_centuries[0].shape[0]} out of {data.shape[0]} matches.'] print[f'Total centuries by Dravid: {dravid_centuries[0].shape[0]} out of {data.shape[0]} matches.'] Output: Total centuries by Sachin: 26 out of 225 matches. Total centuries by Dravid: 8 out of 225 matches. # Example 2 - find out if both sachin and dravid made centuries in a single match both_centuries = np.where[[data[:,1] >= 100] & [data[:,2] >= 100]] print[both_centuries] # returns indices where the condition met print['\n'] for i in both_centuries[0]: print[f'Sachin scored: {data[i][1]}, Dravid scored {data[i][2]} and India\'s total is {data[i][3]}'] print['\n'] print['Or may be print if both have scored fifty runs in a single match:'] print['-'*70] fifties = np.where[ [[data[:,1] >= 50] & [data[:,1] < 100]] & [[data[:,2] >= 50] & [data[:,2] < 100]]] print[fifties]

Or may be print if both have scored fifty runs in a single match: ---------------------------------------------------------------------- [array[[ 7, 72, 84, 143, 163, 164, 195, 200], dtype=int64],]

for i in fifties[0]: print[f'Sachin scored: {data[i][1]}, Dravid scored {data[i][2]} and India\'s total is {data[i][3]}'] Output: Sachin scored: 86.0, Dravid scored 74.0 and India's total is 288.0 Sachin scored: 99.0, Dravid scored 74.0 and India's total is 229.0 Sachin scored: 50.0, Dravid scored 62.0 and India's total is 256.0 Sachin scored: 93.0, Dravid scored 79.0 and India's total is 279.0 Sachin scored: 60.0, Dravid scored 57.0 and India's total is 309.0 Sachin scored: 68.0, Dravid scored 59.0 and India's total is 202.0 Sachin scored: 62.0, Dravid scored 56.0 and India's total is 276.0 Sachin scored: 99.0, Dravid scored 92.0 and India's total is 304.0

Trong ví dụ trên, hãy quan sát rằng tôi đã kết hợp nhiều điều kiện trong hàm where [].

Logic được thực hiện theo các bước bên dưới:

  • tìm các điểm dữ liệu mà sachin ghi được> 50 và 50 và

Chủ Đề