【发布时间】:2021-10-27 05:08:15
【问题描述】:
我有一个三维数组
x[i,j,k]=[[[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]], [[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]], [[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]], [[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]]]
我需要如下的累积总和
y[i][j][k]=[[[1, 21], [3, 28], [6, 36], [10, 45], [15, 55]], [1, 21], [3, 28], [6, 36], [10, 45], [15, 55]], [1, 21], [3, 28], [6, 36], [10, 45], [15, 55]], [1, 21], [3, 28], [6, 36], [10, 45], [15, 55]]]]
我试过了
for k in range(0,1):
for j in range(0,5):
for i in range(0,4):
y[i][j][k]=sum(sum(x[i][j][k] for jj in range(0,5) if jj<=j)for kk in range(0,1) if kk<=k)
但我得到了
y[i][j][k]=[[[1, 12], [3, 26], [6, 42], [10, 60], [15, 80]], [[1, 12], [3, 26], [6, 42], [10, 60], [15, 80]], [[1, 12], [3, 26], [6, 42], [10, 60], [15, 80]], [[1, 12], [3, 26], [6, 42], [10, 60], [15, 80]]]
根据我的需要如何做for循环?
我有
x[0][0][0]=1
x[0][1][0]=2
x[0][2][0]=3
x[0][3][0]=4
x[0][4][0]=5
x[0][0][1]=6
x[0][1][1]=7
x[0][2][1]=8
x[0][3][1]=9
x[0][4][1]=10
我需要做的
y[0][0][0]=x[0][0][0]=1
y[0][1][0]=x[0][0][0]+x[0][1][0]=3
y[0][2][0]=x[0][0][0]+x[0][1][0]+x[0][2][0]=6
y[0][3][0]=x[0][0][0]+x[0][1][0]+x[0][2][0]+x[0][3][0]=10
y[0][4][0]=x[0][0][0]+x[0][1][0]+x[0][2][0]+x[0][3][0]+x[0][4][0]=15
y[0][0][1]=x[0][0][0]+x[0][1][0]+x[0][2][0]+x[0][3][0]+x[0][4][0]+x[0][0][1]=21
y[0][1][1]=x[0][0][0]+x[0][1][0]+x[0][2][0]+x[0][3][0]+x[0][4][0]+x[0][0][1]+x[0][1][1]=28
y[0][2][1]=x[0][0][0]+x[0][1][0]+x[0][2][0]+x[0][3][0]+x[0][4][0]+x[0][0][1]+x[0][1][1]+x[0][2][1]=36
y[0][3][1]=x[0][0][0]+x[0][1][0]+x[0][2][0]+x[0][3][0]+x[0][4][0]+x[0][0][1]+x[0][1][1]+x[0][2][1]+x[0][3][1]=45
y[0][4][1]=x[0][0][0]+x[0][1][0]+x[0][2][0]+x[0][3][0]+x[0][4][0]+x[0][0][1]+x[0][1][1]+x[0][2][1]+x[0][3][1]+x[0][4][1]=55
【问题讨论】:
-
每个子列表不应该是
[[1, 6], [3, 13], [6, 21], [10, 30], [15, 40]]吗?您预期的[1, 21]中的21来自哪里? -
21 是 (1+2+3+4+5+6) 一个维度的累加到下一维度。 (即累积数组的累积)
-
您编写了哪些代码来实现您想要完成的任务? minimal reproducible example?你的代码有什么问题?
-
想要的结果是什么样的?
-
@blhsing 数字 2,3,4,5 在前面的维度中。我现在清楚地编辑了我的要求,您可以在上面查看。
标签: python arrays for-loop multidimensional-array cumsum