考虑其列保存取自1、2、3的随机值的数组a
:
a = np.array([[2, 3, 1, 3],
[3, 2, 1, 3],
[1, 1, 1, 2],
[1, 3, 2, 3],
[3, 3, 1, 3],
[2, 1, 3, 2]])
现在,考虑数组b
,其前2列保存了9个可能的值对,取自1,2,3(元素对的顺序很重要). 第3列的b
将一个非负整数与每个配对相关联.
b = np.array([[1, 1, 6],
[1, 2, 0],
[1, 3, 9],
[2, 1, 6],
[2, 2, 0],
[2, 3, 4],
[3, 1, 1],
[3, 2, 0],
[3, 3, 8]])
我需要帮助生成数组c
的代码,其中a
中的垂直相邻元素被b
的第三列中的匹配值替换.
例如,'a'的第一列从2到3向下移动到1到1到3到2. 因此,c
的第一列将保存值4,1,6,9,0. 同样的概念适用于a
的每一列. 我们看到,对的顺序很重要(从3移动到1产生值1,而从1移动到3产生值9.
这个小例子的输出是:
c = np.array([[4, 0, 6, 8],
[1, 6, 6, 0],
[6, 9, 0, 4],
[9, 8, 6, 8],
[0, 1, 9, 0]])
因为这个代码将被执行大量次,我希望有一个快速的矢量化解决方案.