gpt4 book ai didi

python - 给定一些索引,如何在索引的 "rest"上索引数组/张量?

转载 作者:行者123 更新时间:2023-12-05 03:20:29 26 4
gpt4 key购买 nike

给定一些数组(或张量):

x = np.array([[0, 1, 0, 0, 0],
[0, 0, 0, 1, 0],
[1, 0, 0, 0, 0]])

和一些维度索引等于 x 中的行数:

idx = np.array([3, 1, 0])  # Index values range from (0: number of columns) in "x"!

现在,如果我想根据索引 idx 将某个值 c 添加到 x 的列,我将执行以下操作:

x[range(3), idx] += c

得到:

x = np.array([[  0,  1,  0,  c,  0],
[ 0, c, 0, 1, 0],
[1+c, 0, 0, 0, 0]])

但是,如果我想将值 c 添加到 x 中的every other column index 怎么办,而不是idx 中的确切索引?

期望的结果(基于上面的例子)应该是:

x = np.array([[c, 1+c,  c,   0,  c],
[c, 0, c, 1+c, c],
[1, c, c, c, c]])

最佳答案

创建一个 bool 数组用作掩码:

# set up default mask
m = np.ones(x.shape, dtype=bool)
# update mask
m[np.arange(m.shape[0]), idx] = False
# perform boolean indexing
x[m] += c

输出(c=9):

array([[ 9, 10,  9,  0,  9],
[ 9, 0, 9, 10, 9],
[ 1, 9, 9, 9, 9]])

m:

array([[ True,  True,  True, False,  True],
[ True, False, True, True, True],
[False, True, True, True, True]])

关于python - 给定一些索引,如何在索引的 "rest"上索引数组/张量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73161693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com