我有一个基数组base = [0,1,2,3]
,其中包含集合{0,...,k}
的元素(本例中k
为3
)。我还有另一个数组modif
,它是n
维数组,其中n
是base
中不同元素的数量。
我想迭代地添加一个modif
数组的元素,由base的索引给出,所以如果base = [0,1,2,3]
函数必须将{1}添加到modif[0,1,2,3]
。
我尝试过像
这样的事情probs[b for b in base] += 1
或
probs[(b for b in base)] += 1
甚至
for b in base:
sel = probs[b]
sel += 1
但问题在于,在第一个和第二个中,它不是有效的语法,在第三个中,sel实际上是probs[b]
的副本,而不是相同的实际对象,因此更改未完成在probs
。
答案 0 :(得分:1)
您不需要理解只需将索引转换为元组。这是一个例子:
In [42]: a
Out[42]:
array([[[ 2, 2, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]],
[[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24],
[25, 26, 27, 28, 29]]])
In [43]: b
Out[43]: [0, 1, 2]
In [44]: a[tuple(b)]
Out[44]: 7
In [45]: a[tuple(b)] += 100
In [46]: a
Out[46]:
array([[[ 2, 2, 2, 3, 4],
[ 5, 6, 107, 8, 9],
[ 10, 11, 12, 13, 14]],
[[ 15, 16, 17, 18, 19],
[ 20, 21, 22, 23, 24],
[ 25, 26, 27, 28, 29]]])