python-3.x 如何用数组a中的索引替换数组B中的值?[numpy]

a5g8bdjr  于 2023-02-26  发布在  Python
关注(0)|答案(1)|浏览(131)

例如,有一个数组a。

a = [
        [1,2]
    ]

和阵列B。

b = [
        [[0,0,0],[0,0,0]]
    ]

如何用数组a中的下标1替换数组B中的值?
也就是说,应该获得下面的数组r。

r = [
        [[0,1,0],[0,0,1]]
    ]

我花了很多时间来解决这个问题,还没有找到没有蛮力的最快可能的方法。

wljmcqd8

wljmcqd81#

下面的代码执行广播索引

import numpy as np
    

a = np.array( [
        [1,2]
    ])

b = np.array([
        [[0,0,0],[0,0,0]]
    ])
r = np.zeros(b.shape)
r[np.arange(a.shape[0]), np.array(a.shape ) -1, a] = 1

print(r)

[0.[0. 0. 1.]

相关问题