Numpy布尔数组 - 初学者的简易指南

811 阅读3分钟

Numpy布尔数组是一种数组(值的集合),可以用来表示Python编程语言中存储在数组数据结构中的逻辑 "真 "或 "假 "值。

当需要从一个或多个复杂的变量中获取单一的逻辑值时,将布尔数组与逻辑运算符结合使用,可以有效地减少运行时的计算要求。布尔数组在结果数组中,在执行一些操作时也能发现其有用性。

虽然这样的结构起初似乎没有什么用处,但它对初学者特别重要,因为他们经常会发现自己在熟悉其他具有更大灵活性的复杂Python数据类型之前就已经使用了布尔变量和数组。

Python中的布尔数组是用NumPypython库实现的。Numpy包含一个特殊的数据类型,叫做
numpy.BooleanArray(count, dtype=bool) 。这将产生一个布尔数组(相对于比特整数而言),其中的值要么是0要么是1。

声明一个Numpy布尔数组

一个布尔数组可以使用dtype=bool, 手动制作。除了'0'、'False'、'None'或空字符串以外的所有值在布尔数组中都被认为是True。

import numpy as np
arr = np.array([5, 0.001, 1, 0, 'g', None, True, False, '' "], dtype=bool)
print(bool_arr)

#Output: [True True True False True False True False False]

Numpy布尔数组--关系操作

当对numpy布尔数组进行关系操作时,在条件匹配的情况下,所有的值都被打印为**"真**",其他的值则被打印为**"假**"。在下面的代码例子中演示了等价操作,其中布尔数组的值被检查为等于2。

import numpy as np
A = np.array([2, 5, 7, 3, 2, 10, 2])
print(A == 2)

#Output: [True False False False True False True]

关系性操作,如。"<", ">", "<=", 和 ">="也可以用于计算。

该操作对高维数组也有效。

import numpy as np
# a 4x3 numpy array
A = np.array([[35, 67, 23, 90],   [89, 101, 55, 12],   [45, 2, 72, 33]])
print (A>=35)

#Output: [[ True  True  False  True] [ True  True  True False] [ True  False True False]]

同样,True/False可以用0/1来代替,使用astype()对象将其转换为int类型。

import numpy as np
A = np.array([[90, 11, 9, 2, 34, 3, 19, 100,  41], [21, 64, 12, 65, 14, 16, 10, 122, 11], [10, 5, 12, 15, 14, 16, 10, 12, 12], [ 49, 51, 60, 75, 43, 86, 25, 22, 30]])
B = A < 20
B.astype(np.int)

#Output: array([[0, 1, 1, 1, 0, 1, 1, 0, 0],       [0, 0, 1, 0, 1, 1, 1, 0, 1],       [1, 1, 1, 1, 1, 1, 1, 1, 1],       [0, 0, 0, 0, 0, 0, 0, 0, 0]])

在int类型中,0代表False,1代表True。

Numpy布尔数组--逻辑操作

逻辑运算,例如。AND, OR, NOT, XOR也可以在布尔数组上进行操作,其语法方法如下。

numpy.logical_and(a,b)
numpy.logical_or(a,b)
numpy.logical_not(a,b)

# a and b are single variables or a list/array.

#Output: Boolean value

Numpy布尔数组索引

这是Numpy的一个属性,你可以用布尔数组来访问数组的特定值。在这里也准备了更多关于数组索引的内容。

import numpy as np
# 1D Boolean indexing
A = np.array([1, 2, 3])B = np.array([True, False, True])
print(A[B])
# Output: [1, 3] 

# 2D Boolean indexing
A = np.array([4, 3, 7],  [1, 2, 5])
B = np.array([True, False, True], [False, False, True])
print(A[B])

#Output: [4, 7, 5]

总结

使用Numpy的布尔数组是一个简单的方法来确保数组的内容是你所期望的,而不需要检查每个元素。希望你已经很好地了解了Numpy布尔数组,如何实现它并对它进行操作。