MATLAB条件数组赋值逻辑验证及无循环Python实现咨询
问题解答
你的理解完全正确
这段MATLAB代码的核心逻辑就是布尔索引赋值:逐个对比b和g对应位置的元素,当b[index] < g[index]时,将H对应位置的元素更新为2*100 - H[index]。从运行结果也能验证这一点:
- 索引0:
b[0]=5 < g[0]=9,所以H[0] = 200 -10 =190 - 索引4:
b[4]=22 < g[4]=30,所以H[4] =200-50=150
其余位置不满足条件,H元素保持不变。
Python中无需循环的实现方式
可以借助numpy库的向量运算和布尔索引特性,实现和MATLAB完全一致的逻辑,不需要手动遍历索引:
import numpy as np H = np.array([10, 20, 30, 40, 50, 60]) b = np.array([5, 9, 28, 59, 22, 18]) g = np.array([9, 9, 10, 25, 30, 5]) # 布尔索引赋值 H[b < g] = 2 * 100 - H[b < g] print(H)
运行这段代码会输出:[190 20 30 40 150 60],和MATLAB的结果一致。
内容的提问来源于stack exchange,提问作者KEZIA ANGELINE
相关产品推荐
相关产品推荐

