NumPy - 使用布尔数组切片
在 NumPy 中使用布尔数组切片
在 NumPy 中使用布尔数组切片允许您根据条件从数组中选择元素。我们提供了一个布尔数组,其中 True 表示要选择的元素,False 表示应忽略的元素,而不是使用特定的索引或多个元素。
此方法适用于根据条件(而不是显式循环)从数组中筛选元素,从而更轻松、更简洁地将条件直接应用于数组。它还可用于根据条件删除无效值和修改元素。
选择正数
在下面的示例中,我们创建了一个条件数组 > 0,这将创建一个布尔数组 [False False True True False True False]。然后,使用此布尔数组从数组中选择条件为真并返回 [1, 3, 4] 的元素。
import numpy as np array = np.array([-5, -2, 1, 3, -7, 4, -8]) positive_arr = array > 0 print("布尔数组为:", positive_arr) print("正数:", array[positive_arr])
以下是上述代码的输出 -
布尔数组为:[False False True True False True False] 正数:[1 3 4]
根据条件屏蔽数据
创建一个一维数组,条件为 arr > 30 = 0。当条件为 True 时,此条件将影响数组中的所有元素。此条件将大于 30 的元素替换为 0。
import numpy as np arr_1D= np.array([100, 28, 10, 34, 20, 15, 25]) arr_1D[arr_1D > 30] = 0 print("修改后的数据:", arr_1D)
以下是上述代码的输出 -
修改后的数据:[ 0 28 10 0 20 15 25]
使用逻辑运算符过滤数据
在下面的示例中,我们有一个数组,其中包含某公司一个月的销售额详情,我们需要使用逻辑运算符找出销售额最大的数据,这些数据介于 2500 美元到 3000 美元之间,或者超过 5000 美元。代码如下:-
import numpy as np data = np.array([1200, 3400, 3500, 5500, 3400, 2300, 2600, 2900, 4500]) highest_sales = data[(data >= 2500) & (data<=3000) | (data > 5000) ] print("本月最高销售额为:", highest_sales)
以上代码的输出如下:-
本月最高销售额为:[5500 2600 2900]