Python n维数组中基于数组的索引元素迭代修改
我有一个基本数组Python n维数组中基于数组的索引元素迭代修改,python,arrays,multidimensional-array,Python,Arrays,Multidimensional Array,我有一个基本数组base=[0,1,2,3],它包含集合{0,…,k}(在本例中k是3)。我还有另一个数组modif,它是n维数组,其中n是base中不同元素的数量 我想迭代地向modif数组的一个元素添加一个,由base的索引给出,因此如果base=[0,1,2,3]函数必须向modif[0,1,2,3]添加一个 我试着做一些类似的事情 probs[b for b in base] += 1 或 甚至 for b in base: sel = probs[b] sel += 1 但
base=[0,1,2,3]
,它包含集合{0,…,k}
(在本例中k
是3
)。我还有另一个数组modif
,它是n
维数组,其中n
是base
中不同元素的数量
我想迭代地向modif
数组的一个元素添加一个,由base的索引给出,因此如果base=[0,1,2,3]
函数必须向modif[0,1,2,3]
添加一个
我试着做一些类似的事情
probs[b for b in base] += 1
或
甚至
for b in base:
sel = probs[b]
sel += 1
但问题是,在第一个和第二个例子中,sel是无效语法,在第三个例子中,sel实际上是
probs[b]
的一个副本,不是相同的实际对象,因此在probs
中不需要理解,只需将索引转换为元组即可。以下是一个例子:
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]]])
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]]])