首页 > 解决方案 > 如何用基于索引的列表值替换二维数组的值

问题描述

我想知道是否可以根据 Python 中的索引将二维数组的元素替换为列表的元素:

比方说

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 的元素替换数组 a 的元素。数组 a 的值定义了列表 d 的索引号。

我想要一个像c这样的二维数组,

c = np.array([['g','f','j','g','b'],['c','j','a','g','e'],['i','i','a','b','i'],['j','f','d','g','d']])

标签: pythonstringlistnumpyindexing

解决方案


尝试这个:

>>> a=np.array([[6, 5, 9, 6, 1],[2, 9, 0, 6, 5],[8, 8, 0, 1, 8],[9, 5, 3, 6, 3]])
>>> d=np.array(['a','b','c','d','e','f','g','h','i','j'])
>>> d[a]
array([['g', 'f', 'j', 'g', 'b'],
       ['c', 'j', 'a', 'g', 'f'],
       ['i', 'i', 'a', 'b', 'i'],
       ['j', 'f', 'd', 'g', 'd']], dtype='<U1')
>>> list(map(list,(d[a])))
[['g', 'f', 'j', 'g', 'b'],
 ['c', 'j', 'a', 'g', 'f'],
 ['i', 'i', 'a', 'b', 'i'],
 ['j', 'f', 'd', 'g', 'd']]

推荐阅读