Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python n维数组中基于数组的索引元素迭代修改_Python_Arrays_Multidimensional Array - Fatal编程技术网

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]]])