2 条题解
-
0
NUMPY025 题解:条件赋值
题目
给定数组
np.arange(11),将所有在 3 到 8 之间的元素取反(原地操作)。解题思路
使用布尔索引找到符合条件的元素,然后直接取反。
代码
import numpy as np Z = np.arange(11) Z[(3 < Z) & (Z < 8)] *= -1 print(Z)代码详解
np.arange(11)—— 创建[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10](3 < Z) & (Z < 8)—— 布尔数组,表示 3<Z<8 的位置Z > 3:[F,F,F,F,T,T,T,T,T,T,T]Z < 8:[T,T,T,T,T,T,T,T,T,F,F]- 交集:
[F,F,F,F,T,T,T,T,F,F,F]
Z[条件] *= -1—— 对符合条件的元素取反
输出
[ 0 1 2 3 -4 -5 -6 -7 -8 9 10]布尔索引原理
# 布尔索引示例 Z = np.array([0, 1, 2, 3, 4, 5]) mask = Z > 2 # [F,F,F,T,T,T] Z[mask] = -1 # [0,1,2,-1,-1,-1]核心知识点
- 布尔索引 —— 用布尔数组选择元素
&运算符 —— 布尔数组的"与"操作- 原地操作
*=—— 修改原数组
- 1
信息
- ID
- 79
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 上传者