Python中如何基于索引用列表值替换numpy二维数组元素
可以实现,用numpy的高级索引特性一行代码就能完成,不需要手动遍历数组。
完整实现代码
import numpy as np # 定义原数组和映射列表 a = np.array([[6, 5, 9, 6, 1],[2, 9, 0, 6, 5],[8, 8, 0, 1, 8],[9, 5, 3, 6, 3]]) d = ['a','b','c','d','e','f','g','h','i','j'] # 核心逻辑:先将列表d转为numpy数组,再用a作为索引直接取值 c = np.array(d)[a]
结果验证
运行后输出的c和你预期的结果完全一致:
print(c) # 输出: # [['g' 'f' 'j' 'g' 'b'] # ['c' 'j' 'a' 'g' 'e'] # ['i' 'i' 'a' 'b' 'i'] # ['j' 'f' 'd' 'g' 'd']]
原理解释
这是numpy自带的整数数组索引规则:当你用N维整数数组索引一维数组时,会返回和索引数组形状完全相同的新数组,每个位置的元素就是被索引数组对应索引处的取值,性能远高于Python层面的循环遍历,适合处理大规模数组。
内容的提问来源于stack exchange,提问作者Jabbar
相关产品推荐
相关产品推荐

