C umsum :计算轴向元素累加和,返回由中间结果组成的数组
重点就是返回值是“由中间结果组成的数组”
以下代码在python3.6版本运行成功!
下面看代码,定义一个2*2*3的数组,所以其shape是2,2,3,索引分别0,1,2
shape | 索引 |
---|---|
2 | 0 |
2 | 1 |
3 | 2 |
代码:
import numpy
as np
arr = np.array([[[
1,
2,
3],[
8,
9,
12]],[[
1,
2,
4],[
2,
4,
5]]])
#2*2*3
print(arr.cumsum(
0))
print(arr.cumsum(
1))
print(arr.cumsum(
2))
输出结果:
#cumsum(0)
[[[ 1 2 3]
[ 8 9 12]]
[[ 2 4 7]
[10 13 17]]]
#cumsum(1)
[[[ 1 2 3]
[ 9 11 15]]
[[ 1 2 4]
[ 3 6 9]]]
#cumsum(2)
[[[ 1 3 6]
[ 8 17 29]]
[[ 1 3 7]
[ 2 6 11]]]
注释:
arr是一个2*2*3三维矩阵,索引值为0,1,2
cumsum(0):实现0轴上的累加:以最外面的数组元素为单位,以[[1,2,3],[8,9,12]]为开始实现后面元素的对应累加
cumsum(1):实现1轴上的累加:以中间数组元素为单位,以[1,2,3]为开始,实现后面元素的对应累加
cumsum(2):实现2轴上的累加:以最里面的元素为累加单位,即1为开始,实现后面的元素累加
四维数组实现
下面看一个四维数组2*2*2*4,索引值为0,1,2,3
代码:
import numpy
as np
arr = np.arange(
32).reshape((
2,
2,
2,
4))
print(arr)
print(arr.cumsum(
0))
print(arr.cumsum(
1))
print(arr.cumsum(
2))
print(arr.cumsum(
3))
arr:
[[[[
0
1
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
30
31]]]]
arr是一个2*2*2*4四维矩阵,索引值为0,1,2,3
cumsum(0):实现0轴上的累加即:以最外面数组元素为单位即
[[[ 0 1 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
30
31]]]]
对应位置元素相加起来\
结果:
[[[[
0
1
2
3]
[
4
5
6
7]]
[[
8
9
10
11]
[
12
13
14
15]]]
[[[
16
18
20
22]
[
24
26
28
30]]
[[
32
34
36
38]
[
40
42
44
46]]]]
cumsum(1):实现1轴上的累加即:以次外面元素为单位,累加:
[[ 0 1 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
30
31]]
累计过程产生的中间结果要记录到数组中
所以,结果:
[[[[
0
1
2
3]
[
4
5
6
7]]
[[
8
10
12
14]
[
16
18
20
22]]]
[[[
16
17
18
19]
[
20
21
22
23]]
[[
40
42
44
46]
[
48
50
52
54]]]]
cumsum(2)就对应从[ 0 1 2 3]数组元素开始实现累加,然后记录中间结果
cumsum(3)对应的是从最里面最小的数组元素,即从0开始实现累加,记录中间结果\
**原创解释,禁止复制,支持转载!注明来源
**\
\