Cách tạo một mảng boolean trong Python

Trong bài đăng này, tôi sẽ viết về cách bạn có thể tạo mảng boolean trong NumPy và sử dụng chúng trong mã của mình

Tổng quan

Mảng Boolean trong NumPy là các mảng NumPy đơn giản với các phần tử mảng là 'True' hoặc 'False'. Ngoài việc tạo mảng Boolean bằng cách viết từng phần tử một và chuyển đổi chúng thành mảng NumPy, chúng ta cũng có thể chuyển đổi một mảng thành mảng 'Boolean' theo một số cách dễ dàng mà chúng ta sẽ xem xét ở đây trong bài đăng này.
Trong quá trình này, tất cả các phần tử khác 0, Không có và Sai đều được coi là Đúng.

Mảng Boolean sử dụng dtype=’bool’ trong NumPy – Python

Hãy lấy một ví dụ

import numpy as np
import random

array = []
for _ in range(10):
    num = random.randint(0,1)
    array.append(num)
print(f'Original Array={array}')  # prints the original array with 0's and 1's
nump_array = np.array(array,dtype='bool')
print(f'numpy boolean array:{nump_array}')  # prints the converted boolean array

Ở đây đầu ra sẽ trông giống như thế này.
đầu ra.

Cách tạo một mảng boolean trong Python
Cách tạo một mảng boolean trong Python

Mảng Boolean sử dụng so sánh trong NumPy

Ví dụ

import numpy as np
import random

array = np.arange(10,30)
print('1st array=',array,'\n')
array_bool = array > 15
print(f'First boolean array by comparing with an element:\n{array_bool}\n\n')

array_2 = [random.randint(10,30) for i in range(20)]  # second array using list comprehension
print(f'Second array:\n{array_2}')
array2_bool = array_2 > array
print(f'second boolean array by comparing second array with 1st array:\n{array2_bool}')

Trong đoạn mã trên, tôi đã tạo 'mảng' được tạo bằng hàm

print(A < 5)
2. Và các phần tử từ 10 đến 30 (20 phần tử).
Bây giờ hãy tạo mảng boolean (array_bool) bằng cách so sánh nó với 15 nếu các phần tử lớn hơn 15 thì chúng được ghi là Đúng, ngược lại là Sai.

Mảng thứ hai được tạo bằng kỹ thuật 'Hiểu danh sách' đơn giản. Và có cùng độ dài với 'mảng' và các phần tử là ngẫu nhiên trong khoảng từ 10 đến 30(đã bao gồm). Bây giờ, mảng boolean thứ hai được tạo bằng cách so sánh giữa các phần tử của mảng thứ nhất với mảng thứ hai có cùng chỉ số

đầu ra

Cách tạo một mảng boolean trong Python
Cách tạo một mảng boolean trong Python

**Ghi chú. Điều này được gọi là 'Lập chỉ mục Boolean' và có thể được sử dụng theo nhiều cách, một trong số chúng được sử dụng để trích xuất tính năng trong học máy. Hoặc đơn giản hơn, người ta có thể nghĩ đến việc trích xuất một mảng số chẵn/lẻ từ một mảng 100 số

Mọi phần tử của Mảng A đều được kiểm tra, nếu nó bằng 4. Kết quả của các phép thử này là các phần tử Boolean của mảng kết quả

Of course, it is also possible to check on "<", "<=", ">" and ">=".

print(A < 5)

ĐẦU RA

[ True False  True  True  True False]

Nó cũng hoạt động cho kích thước cao hơn

B = np.array([[42,56,89,65],
              [99,88,42,12],
              [55,42,17,18]])

print(B>=42)

ĐẦU RA

[[ True  True  True  True]
 [ True  True  True False]
 [ True  True False False]]

Đó là một cách thuận tiện để ngưỡng hình ảnh

import numpy as np

A = np.array([
[12, 13, 14, 12, 16, 14, 11, 10,  9],
[11, 14, 12, 15, 15, 16, 10, 12, 11],
[10, 12, 12, 15, 14, 16, 10, 12, 12],
[ 9, 11, 16, 15, 14, 16, 15, 12, 10],
[12, 11, 16, 14, 10, 12, 16, 12, 13],
[10, 15, 16, 14, 14, 14, 16, 15, 12],
[13, 17, 14, 10, 14, 11, 14, 15, 10],
[10, 16, 12, 14, 11, 12, 14, 18, 11],
[10, 19, 12, 14, 11, 12, 14, 18, 10],
[14, 22, 17, 19, 16, 17, 18, 17, 13],
[10, 16, 12, 14, 11, 12, 14, 18, 11],
[10, 16, 12, 14, 11, 12, 14, 18, 11],
[10, 19, 12, 14, 11, 12, 14, 18, 10],
[14, 22, 12, 14, 11, 12, 14, 17, 13],
[10, 16, 12, 14, 11, 12, 14, 18, 11]])

B = A < 15
B.astype(np.int8)

ĐẦU RA

array([[1, 1, 1, 1, 0, 1, 1, 1, 1],
       [1, 1, 1, 0, 0, 0, 1, 1, 1],
       [1, 1, 1, 0, 1, 0, 1, 1, 1],
       [1, 1, 0, 0, 1, 0, 0, 1, 1],
       [1, 1, 0, 1, 1, 1, 0, 1, 1],
       [1, 0, 0, 1, 1, 1, 0, 0, 1],
       [1, 0, 1, 1, 1, 1, 1, 0, 1],
       [1, 0, 1, 1, 1, 1, 1, 0, 1],
       [1, 0, 1, 1, 1, 1, 1, 0, 1],
       [1, 0, 0, 0, 0, 0, 0, 0, 1],
       [1, 0, 1, 1, 1, 1, 1, 0, 1],
       [1, 0, 1, 1, 1, 1, 1, 0, 1],
       [1, 0, 1, 1, 1, 1, 1, 0, 1],
       [1, 0, 1, 1, 1, 1, 1, 0, 1],
       [1, 0, 1, 1, 1, 1, 1, 0, 1]], dtype=int8)

Nếu bạn xem kỹ kết quả trước đó, bạn sẽ thấy rằng chữ hoa 'A' bị ẩn trong mảng B

Lập chỉ mục ưa thích

Chúng tôi sẽ lập chỉ mục một mảng C trong ví dụ sau bằng cách sử dụng mặt nạ Boolean. Nó được gọi là lập chỉ mục ưa thích, nếu mảng được lập chỉ mục bằng cách sử dụng mảng boolean hoặc số nguyên (mặt nạ). Kết quả sẽ là một bản sao và không phải là một chế độ xem

Trong ví dụ tiếp theo, chúng ta sẽ sử dụng mặt nạ Boolean của một mảng để chọn các phần tử tương ứng của một mảng khác. Mảng R mới chứa tất cả các phần tử của C trong đó giá trị tương ứng của (A<=5) là True

________số 8

ĐẦU RA

[123 190 100]

Đào tạo Python trực tiếp

Cách tạo một mảng boolean trong Python

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

đăng ký tại đây

Lập chỉ mục với một mảng số nguyên

Trong ví dụ sau, chúng ta sẽ lập chỉ mục với một mảng số nguyên

import numpy as np
import random

array = np.arange(10,30)
print('1st array=',array,'\n')
array_bool = array > 15
print(f'First boolean array by comparing with an element:\n{array_bool}\n\n')

array_2 = [random.randint(10,30) for i in range(20)]  # second array using list comprehension
print(f'Second array:\n{array_2}')
array2_bool = array_2 > array
print(f'second boolean array by comparing second array with 1st array:\n{array2_bool}')
00

ĐẦU RA

import numpy as np
import random

array = np.arange(10,30)
print('1st array=',array,'\n')
array_bool = array > 15
print(f'First boolean array by comparing with an element:\n{array_bool}\n\n')

array_2 = [random.randint(10,30) for i in range(20)]  # second array using list comprehension
print(f'Second array:\n{array_2}')
array2_bool = array_2 > array
print(f'second boolean array by comparing second array with 1st array:\n{array2_bool}')
01

Các chỉ số có thể xuất hiện theo mọi thứ tự và nhiều lần

bài tập

Trích xuất từ ​​mảng np. mảng ([3,4,6,10,24,89,45,43,46,99,100]) với Boolean che tất cả các số

  • không chia hết cho 3

  • chia hết cho 5

  • chia hết cho 3 và 5

  • chia hết cho 3 và đặt chúng thành 42

Các giải pháp

import numpy as np
import random

array = np.arange(10,30)
print('1st array=',array,'\n')
array_bool = array > 15
print(f'First boolean array by comparing with an element:\n{array_bool}\n\n')

array_2 = [random.randint(10,30) for i in range(20)]  # second array using list comprehension
print(f'Second array:\n{array_2}')
array2_bool = array_2 > array
print(f'second boolean array by comparing second array with 1st array:\n{array2_bool}')
02

ĐẦU RA

import numpy as np
import random

array = np.arange(10,30)
print('1st array=',array,'\n')
array_bool = array > 15
print(f'First boolean array by comparing with an element:\n{array_bool}\n\n')

array_2 = [random.randint(10,30) for i in range(20)]  # second array using list comprehension
print(f'Second array:\n{array_2}')
array2_bool = array_2 > array
print(f'second boolean array by comparing second array with 1st array:\n{array2_bool}')
03

khác không và ở đâu

Có một phương thức ndarray được gọi là nonzero và một phương thức numpy có tên này. Hai chức năng là tương đương

Đối với một ndarray cả hai numpy. khác không (a) và a. nonzero() trả về chỉ số của các phần tử khác không. Các chỉ số được trả về dưới dạng một bộ mảng, một mảng cho mỗi thứ nguyên của 'a'. Các giá trị khác không tương ứng có thể thu được với

print(A < 5)
6

import numpy as np
import random

array = np.arange(10,30)
print('1st array=',array,'\n')
array_bool = array > 15
print(f'First boolean array by comparing with an element:\n{array_bool}\n\n')

array_2 = [random.randint(10,30) for i in range(20)]  # second array using list comprehension
print(f'Second array:\n{array_2}')
array2_bool = array_2 > array
print(f'second boolean array by comparing second array with 1st array:\n{array2_bool}')
04

ĐẦU RA

import numpy as np
import random

array = np.arange(10,30)
print('1st array=',array,'\n')
array_bool = array > 15
print(f'First boolean array by comparing with an element:\n{array_bool}\n\n')

array_2 = [random.randint(10,30) for i in range(20)]  # second array using list comprehension
print(f'Second array:\n{array_2}')
array2_bool = array_2 > array
print(f'second boolean array by comparing second array with 1st array:\n{array2_bool}')
05

Nếu bạn muốn nhóm các chỉ số theo phần tử, bạn có thể sử dụng hoán vị

print(A < 5)
7

Một mảng hai chiều được trả về. Mỗi hàng tương ứng với một phần tử khác không

import numpy as np
import random

array = np.arange(10,30)
print('1st array=',array,'\n')
array_bool = array > 15
print(f'First boolean array by comparing with an element:\n{array_bool}\n\n')

array_2 = [random.randint(10,30) for i in range(20)]  # second array using list comprehension
print(f'Second array:\n{array_2}')
array2_bool = array_2 > array
print(f'second boolean array by comparing second array with 1st array:\n{array2_bool}')
06

ĐẦU RA

import numpy as np
import random

array = np.arange(10,30)
print('1st array=',array,'\n')
array_bool = array > 15
print(f'First boolean array by comparing with an element:\n{array_bool}\n\n')

array_2 = [random.randint(10,30) for i in range(20)]  # second array using list comprehension
print(f'Second array:\n{array_2}')
array2_bool = array_2 > array
print(f'second boolean array by comparing second array with 1st array:\n{array2_bool}')
07

Các giá trị khác không tương ứng có thể được truy xuất bằng

import numpy as np
import random

array = np.arange(10,30)
print('1st array=',array,'\n')
array_bool = array > 15
print(f'First boolean array by comparing with an element:\n{array_bool}\n\n')

array_2 = [random.randint(10,30) for i in range(20)]  # second array using list comprehension
print(f'Second array:\n{array_2}')
array2_bool = array_2 > array
print(f'second boolean array by comparing second array with 1st array:\n{array2_bool}')
08

ĐẦU RA

import numpy as np
import random

array = np.arange(10,30)
print('1st array=',array,'\n')
array_bool = array > 15
print(f'First boolean array by comparing with an element:\n{array_bool}\n\n')

array_2 = [random.randint(10,30) for i in range(20)]  # second array using list comprehension
print(f'Second array:\n{array_2}')
array2_bool = array_2 > array
print(f'second boolean array by comparing second array with 1st array:\n{array2_bool}')
09

Hàm 'khác 0' có thể được sử dụng để lấy các chỉ số của một mảng, trong đó điều kiện là Đúng. Trong đoạn script sau, chúng ta tạo mảng Boolean B >= 42

Một mảng boolean là gì?

Mảng boolean là một dãy các biến chỉ có thể mang giá trị true hoặc false. Giá trị Boolean chỉ có thể đúng hoặc sai và không thể có bất kỳ giá trị trung gian nào khác. Mảng là tập hợp các kiểu dữ liệu được lưu trữ ở các vị trí số trong không gian bộ nhớ tuyến tính

Làm cách nào để chuyển đổi mảng có nhiều mảng thành boolean?

Chỉ cần sử dụng kiểm tra đẳng thức. Giả sử a là ma trận numpy của bạn, dùng b = (a == 0) hoặc b = (a. = 0) để lấy ma trận giá trị boolean . Trong một số trường hợp, vì giá trị có thể đủ nhỏ nhưng khác không, nên bạn có thể sử dụng abs(a) < TH, trong đó TH là ngưỡng số mà bạn đặt.

Lập chỉ mục mảng boolean trong Python là gì?

Ở dạng đơn giản nhất, lập chỉ mục boolean hoạt động như sau. Giả sử x là một mảng chiều và ind là một mảng giá trị boolean có cùng hình dạng với x. Sau đó, x[ind] trả về một mảng 1 chiều, được hình thành bằng cách duyệt qua x và ind bằng cách sử dụng thứ tự chính của hàng