当前位置:   article > 正文

Python 3.6 NumPy一_python3.6 numpy

python3.6 numpy

Python下有很多科学计算库,这一个支点我开始学习NumPy,然后做做笔记

1、安装numpy,没花头,pip install numpy,linux记得sudo


先来对比一下效率,两个函数,一个通过python的list去做,一个通过numpy库去做,看一下计算的时间

  1. import numpy as np
  2. from datetime import datetime
  3. def python_style(n: int):
  4. l1 = [x ** 2 for x in range(n)]
  5. l2 = [y ** 3 for y in range(n)]
  6. ret = []
  7. for item in range(len(l1)):
  8. ret.append(l1[item] + l2[item])
  9. return ret
  10. def numpy_style(n: int):
  11. a = np.arange(n) ** 2
  12. b = np.arange(n) ** 3
  13. return a + b
  14. start = datetime.now()
  15. py_arr = python_style(1000)
  16. print(datetime.now() - start)
  17. start = datetime.now()
  18. numpy_arr = numpy_style(1000)
  19. print(datetime.now() - start)

0:00:00.001608 ----python
0:00:00.000050 ----numpy

可以发现,巨大的差距,接下来是基础扫盲的过程。。。。。

  1. # 创建一个numpy.ndarray类型的对象,他是一个数组
  2. np_arr1 = np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5]])
  3. print(np_arr1) # 看下对象的内容
  4. # [[1 2 3]
  5. # [2 3 4]
  6. # [3 4 5]]
  7. print(type(np_arr1)) # 对象类型
  8. # <class 'numpy.ndarray'>
  9. print(np_arr1.dtype) # 中间每一个元素的类型
  10. # int64
  11. print(np_arr1.itemsize) # 每个元素的大小,里面每个元素都是int64,也就是8个字节
  12. # 8
  13. print(np_arr1.ndim) # 维度个数
  14. # 2
  15. print(np_arr1.shape) # 每个维度的元素个数
  16. # (3, 3)
  17. print(np_arr1.size) # 总元素个数,等于shape列出维度的乘积
  18. # 9
  19. print(np_arr1[1]) # 注意这里的[]不代表一个list而是一个numpy.ndarray容器
  20. # [2 3 4]
  21. print(type(np_arr1[1])) # 这个数组试一个ndarray层层叠加的过程
  22. # <class 'numpy.ndarray'>

再来看一下简单的方法

  1. # sharp是一个模型,确定好模型以后就可以通过模型构建数组
  2. # def zeros(shape, dtype=None, order='C')
  3. array = np.zeros((3, 5))
  4. print(array)
  5. # [[ 0. 0. 0. 0. 0.]
  6. # [ 0. 0. 0. 0. 0.]
  7. # [ 0. 0. 0. 0. 0.]]
  8. print(array.dtype) # 注意元素类型,float会有一个点'.'跟在数字后面
  9. # float64
  10. # 同样的还有一个
  11. array = np.ones((3, 5))
  12. print(array)
  13. # [[ 1. 1. 1. 1. 1.]
  14. # [ 1. 1. 1. 1. 1.]
  15. # [ 1. 1. 1. 1. 1.]]
  16. # 还有一个np.empty((3,5))这个就是创建一个模型,并不初始化,里面会有很多野数据
  17. # arange()和range效果差不多
  18. array = np.arange(15)
  19. print(array)
  20. # [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
  21. # 多维数组也能这么创建
  22. # array = np.array([np.arange(5), np.arange(5), np.arange(5)])
  23. # [[0 1 2 3 4]
  24. # [0 1 2 3 4]
  25. # [0 1 2 3 4]]
  26. # 通过reshape去修改重构
  27. array = np.reshape(array, [3, 5])
  28. print(array)
  29. # [[ 0 1 2 3 4]
  30. # [ 5 6 7 8 9]
  31. # [10 11 12 13 14]]
  32. # 同样还可以扁平化
  33. array = np.ravel(array)
  34. print(array)
  35. # [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
  36. # N*N单位矩阵(eye,会有一个条对角线全为1
  37. array = np.eye(5,5) # 第一个参数行数,第二个参数列数
  38. print(array)
  39. # [[ 1. 0. 0. 0. 0.]
  40. # [ 0. 1. 0. 0. 0.]
  41. # [ 0. 0. 1. 0. 0.]
  42. # [ 0. 0. 0. 1. 0.]
  43. # [ 0. 0. 0. 0. 1.]]
  44. array = np.identity(4) # 与上面类似,只不过是个正方形
  45. print(array)
  46. # [[ 1. 0. 0. 0.]
  47. # [ 0. 1. 0. 0.]
  48. # [ 0. 0. 1. 0.]
  49. # [ 0. 0. 0. 1.]]

数组的取值

  1. # 以前的多维数组,我都是通过不断叠加下标去取值的,numpy就不一样了(当然你一定要这么写也是可以的)
  2. array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
  3. print(array)
  4. # [[1 2 3]
  5. # [4 5 6]
  6. # [7 8 9]]
  7. print(array[0, 1]) # 2
  8. print(array[2, 0]) # 7
  9. # [x,y] x代表第一个维度的第几个元素, y代表x所在维度的第几个元素
  10. # 试一下三维
  11. array = np.array(
  12. [
  13. [
  14. [1.1, 1.2, 1.2], [2.1, 2.2, 2.3], [3.1, 3.2, 3.3]
  15. ],
  16. [
  17. [4.1, 4.2, 4.3], [5.1, 5.2, 5.3], [6.1, 6.2, 6.3]
  18. ],
  19. [
  20. [7.1, 7.2, 7.3], [8.1, 8.2, 8.3], [9.1, 9.2, 9.3]
  21. ]
  22. ])
  23. print(array)
  24. # [[[ 1.1 1.2 1.2]
  25. # [ 2.1 2.2 2.3]
  26. # [ 3.1 3.2 3.3]]
  27. #
  28. # [[ 4.1 4.2 4.3]
  29. # [ 5.1 5.2 5.3]
  30. # [ 6.1 6.2 6.3]]
  31. #
  32. # [[ 7.1 7.2 7.3]
  33. # [ 8.1 8.2 8.3]
  34. # [ 9.1 9.2 9.3]]]
  35. print(array[0, 1, 0]) # 2.1
  36. print(array[2, 2, 2]) # 9.3


类型转换

  1. # 转换数据类型
  2. # int -> float
  3. int_array = np.arange(5)
  4. print(int_array)
  5. # [0 1 2 3 4]
  6. print(int_array.dtype)
  7. # int64
  8. float_array = int_array.astype(np.float64) # 转换
  9. print(float_array)
  10. # [ 0. 1. 2. 3. 4.]
  11. print(float_array.dtype)
  12. # float64
  13. # float -> int
  14. float_array = np.arange(0, 4, 0.5)
  15. print(float_array)
  16. # [ 0. 0.5 1. 1.5 2. 2.5 3. 3.5]
  17. print(float_array.astype(np.int64))
  18. # [0 0 1 1 2 2 3 3]

  1. # 自定义类型
  2. # 先看一下基础类型
  3. t = np.dtype(np.int64)
  4. print(t.type)
  5. print(t.char)
  6. print(t.str)
  7. # <class 'numpy.int64'>
  8. # l
  9. # <i8
  10. # 之后在dtype参数那里就可以填入l或者<i8或者np.int64代表元素类型
  11. # 先定义个自定义的符合类型,这里的第一个类型‘name’后面跟着两个参数,是因为字符串需要确认长度
  12. custom_type = np.dtype([('name', np.str_, 40), ('itemnum', np.int64), ('price', np.float64)])
  13. print(custom_type)
  14. # [('name', '<U40'), ('itemnum', '<i8'), ('price', '<f8')]
  15. array = np.array([
  16. ('TV',20,19.9),
  17. ('PC', 5, 99.9)
  18. ], dtype=custom_type)
  19. print(array)
  20. # [('TV', 20, 19.9) ('PC', 5, 99.9)]
  21. print(array['name'])
  22. # ['TV' 'PC']

  1. # 数组运算
  2. array = np.array([
  3. [1, 2, 3],
  4. [4, 5, 6]
  5. ])
  6. print(array)
  7. # [[1 2 3]
  8. # [4 5 6]]
  9. print(array - array)
  10. # [[0 0 0]
  11. # [0 0 0]]
  12. print(array * array)
  13. # [[ 1 4 9]
  14. # [16 25 36]]
  15. print(array ** 2)
  16. # [[ 1 4 9]
  17. # [16 25 36]]
  18. print(1 / array)
  19. # [[ 1. 0.5 0.33333333]
  20. # [ 0.25 0.2 0.16666667]]
  21. print(array // 2)
  22. # [[0 1 1]
  23. # [2 2 3]]

  1. # 切片
  2. array = np.array(
  3. [
  4. [
  5. [1, 2],
  6. [3, 4]
  7. ],
  8. [
  9. [5, 6],
  10. [7, 8]
  11. ],
  12. [
  13. [9, 10],
  14. [11, 12]
  15. ]
  16. ]
  17. )
  18. # 这是一个三维数组,那切片其实是一样的,就是需要理一下思路
  19. print(array[:]) # 遍历三维数组内所有的二维数组
  20. print('-------------------')
  21. print(array[0:2]) # 遍历三维数组内前两个二维数组
  22. print('-------------------')
  23. print(array[-2:]) # 遍历三维数组内后两个二维数组
  24. print('-------------------')
  25. print(array[::-1]) # 将数组内该维度的元素反向排序,重新生成一个
  26. # 再进一层
  27. # 遍历三维数组的倒数两个元素,会得到两个二维数组
  28. # 然后遍历这两个二维数组的第二个元素
  29. print('-------------------')
  30. print(array[-2:, 1:])
  31. # [[[ 7 8]]
  32. #
  33. # [[11 12]]]
  34. # 这个时候,再去拿那两个二维数组的第一个值
  35. print('-------------------')
  36. print(array[-2:, 1:, 0])
  37. # [[ 7]
  38. # [11]]
  39. # 这个时候要看一下,他返回的是什么
  40. ret_arr = array[-2:, 1:, 0]
  41. # 他返回一个二维数组,二维数组的每一个元素都是一个只有一个元素的以为数组
  42. print('-------------------')
  43. print(ret_arr[1, 0]) # 11
  44. # 每一个逗号都代表了一层维度,通过维度可以返回多个值或者一个值,返回的类型需要注意
  45. # 测试一下取单一值的返回类型
  46. print('-------------------')
  47. print(array[0, 0, 0]) # 1
  48. print(type(array[0, 0, 0])) # int64
print(array[0, ...])  # 只需要第一个维度的第0个元素
print(array[...,1]  # 需要最后一个维度所有元素的第二个元素

  1. names = np.array(['aa', 'bb', 'cc', 'dd', 'aa', 'bb', 'cc'])
  2. data = np.random.randn(7, 4)
  3. print(data)
  4. # [[-0.7730927 -0.61826381 0.5954012 0.83927967]
  5. # [ 0.17513281 -0.02061551 -0.06197476 0.87479289]
  6. # [-0.21595191 0.15207614 -1.68710421 -2.069167 ]
  7. # [ 0.37064103 0.50932026 0.210167 1.56221687]
  8. # [ 0.41340528 1.445154 -1.24314649 -1.06785139]
  9. # [ 1.43764089 1.0660907 -0.3816355 -2.27248331]
  10. # [-0.17388653 0.14872601 -1.23795655 -0.04884237]]
  11. print('---------------------------------------------------')
  12. print(names == 'aa')
  13. # [ True False False False True False False]
  14. print(data[names == 'aa'])
  15. # [[-0.7730927 -0.61826381 0.5954012 0.83927967]
  16. # [ 0.41340528 1.445154 -1.24314649 -1.06785139]]
  17. # 这个挺神奇的,将两个数组进行匹配,效果自己看一下吧
  18. # names == 'aa' # 等于
  19. # names != 'aa' # 不等于
  20. # (names == 'aa') == -(names != 'aa') # 这两个是等价的
  21. data = np.arange(7)
  22. print(data) # [0 1 2 3 4 5 6]
  23. print(data[(names == 'aa') | (names == 'bb')]) # [0 1 4 5]
  24. # 接下来我们把data里所有小于4的元素赋值为666
  25. data[data < 4] = 666
  26. print(data) # [666 666 666 666 4 5 6]
  27. # 花式索引
  28. # 根据给定数组选取目标数组的元素
  29. data = np.empty((10, 5), dtype=np.int64)
  30. for i in range(10):
  31. data[i] = i
  32. print(data)
  33. # [[0 0 0 0 0]
  34. # [1 1 1 1 1]
  35. # [2 2 2 2 2]
  36. # [3 3 3 3 3]
  37. # [4 4 4 4 4]
  38. # [5 5 5 5 5]
  39. # [6 6 6 6 6]
  40. # [7 7 7 7 7]
  41. # [8 8 8 8 8]
  42. # [9 9 9 9 9]]
  43. print(data[[1, 3, 4, 7, 9]])
  44. # [[1 1 1 1 1]
  45. # [3 3 3 3 3]
  46. # [4 4 4 4 4]
  47. # [7 7 7 7 7]
  48. # [9 9 9 9 9]]
  49. data = np.arange(32).reshape(8, 4)
  50. print(data)
  51. # [[ 0 1 2 3]
  52. # [ 4 5 6 7]
  53. # [ 8 9 10 11]
  54. # [12 13 14 15]
  55. # [16 17 18 19]
  56. # [20 21 22 23]
  57. # [24 25 26 27]
  58. # [28 29 30 31]]
  59. print('--------------------------')
  60. print(data[[1, 3, 2, 4], [0, 3, 2, 1]])
  61. # [ 4 15 10 17] 两个数组内的元素一一对应,选取第一个维度下标为1的第0个元素。。。。。。。
  62. print('--------------------------')
  63. print(data[[1, 5, 7, 2]])
  64. # [[ 4 5 6 7]
  65. # [20 21 22 23]
  66. # [28 29 30 31]
  67. # [ 8 9 10 11]]
  68. print(data[[1, 5, 7, 2]][:, [3, 2, 1]]) # 这里其实是两步
  69. # [[ 7 6 5]
  70. # [23 22 21]
  71. # [31 30 29]
  72. # [11 10 9]]
  73. print('--------------------------')
  74. print(data[np.ix_([0, 1], [0, 3])])
  75. # 1.选取第一个维度第0个元素的第0个元素和第3个元素
  76. # 2.选取第一个维度第1个元素的第0个元素和第3个元素
  77. # [[0 3]
  78. # [4 7]]
  79. # 数组转置
  80. arr = np.arange(15)
  81. arr.reshape(3, 5)
  82. print(arr)
  83. # [[ 0 1 2 3 4]
  84. # [ 5 6 7 8 9]
  85. # [10 11 12 13 14]]
  86. print(arr.T)
  87. # [[ 0 5 10]
  88. # [ 1 6 11]
  89. # [ 2 7 12]
  90. # [ 3 8 13]
  91. # [ 4 9 14]]
  92. arr.shape = (3, 5) # 也可以这样直接转
  93. print(arr)
  94. # [[ 0 1 2 3 4]
  95. # [ 5 6 7 8 9]
  96. # [10 11 12 13 14]]
  97. print(arr.transpose()) # 这个也是转置
  98. # [[ 0 5 10]
  99. # [ 1 6 11]
  100. # [ 2 7 12]
  101. # [ 3 8 13]
  102. # [ 4 9 14]]
  103. print(arr)
  104. # [[ 0 1 2 3 4]
  105. # [ 5 6 7 8 9]
  106. # [10 11 12 13 14]]
  107. arr.resize(5,3) # 之前几个函数有的试通过返回值重新构建了一个数组,这个函数是直接改的
  108. print(arr)
  109. # [[ 0 1 2]
  110. # [ 3 4 5]
  111. # [ 6 7 8]
  112. # [ 9 10 11]
  113. # [12 13 14]]


其实我还有一段,先休息一下

  1. # 数组的混合组合
  2. data = np.arange(9).reshape(3, 3)
  3. data2 = data * 2
  4. print(data)
  5. # [[0 1 2]
  6. # [3 4 5]
  7. # [6 7 8]]
  8. print(data2)
  9. # [[ 0 2 4]
  10. # [ 6 8 10]
  11. # [12 14 16]]
  12. # 水平组合
  13. print(np.hstack((data, data2)))
  14. # [[ 0 1 2 0 2 4]
  15. # [ 3 4 5 6 8 10]
  16. # [ 6 7 8 12 14 16]]
  17. # 垂直组合
  18. print(np.vstack((data, data2)))
  19. # [[ 0 1 2]
  20. # [ 3 4 5]
  21. # [ 6 7 8]
  22. # [ 0 2 4]
  23. # [ 6 8 10]
  24. # [12 14 16]]
  25. # 当axis=0的时候是垂直组合,axis=1的时候是水平组合
  26. print(np.concatenate((data, data2), axis=0))
  27. # [[ 0 1 2]
  28. # [ 3 4 5]
  29. # [ 6 7 8]
  30. # [ 0 2 4]
  31. # [ 6 8 10]
  32. # [12 14 16]]
  33. print(np.concatenate((data, data2), axis=1))
  34. # [[ 0 1 2 0 2 4]
  35. # [ 3 4 5 6 8 10]
  36. # [ 6 7 8 12 14 16]]
  37. # 深度组合
  38. # 第一个数组的第一个元素和第二个数组的第一个元素,组成一个数组,以此类推
  39. print(np.dstack((data, data2)))
  40. # [[[ 0 0]
  41. # [ 1 2]
  42. # [ 2 4]]
  43. #
  44. # [[ 3 6]
  45. # [ 4 8]
  46. # [ 5 10]]
  47. #
  48. # [[ 6 12]
  49. # [ 7 14]
  50. # [ 8 16]]]
  51. print('------------------------------')
  52. data = np.arange(2)
  53. data2 = data * 2
  54. print(data)
  55. # [0 1]
  56. print(data2)
  57. # [0 2]
  58. print(np.column_stack((data, data2)))
  59. # [[0 0]
  60. # [1 2]]
  61. print(np.dstack((data, data2)))
  62. # [[[0 0]
  63. # [1 2]]]
  64. # colum_stack == dstack
  65. print('---------------------------------')
  66. print(np.row_stack((data, data2)))
  67. # [[0 1]
  68. # [0 2]]
  69. print(np.vstack((data, data2)))
  70. # [[0 1]
  71. # [0 2]]
  72. # row_stack == vstack
  73. print('----------------------------------')
  74. # 数组的分割
  75. data = np.arange(1, 10).reshape(3, 3)
  76. print(data)
  77. # [[1 2 3]
  78. # [4 5 6]
  79. # [7 8 9]]
  80. d1, d2, d3 = np.hsplit(data, 3)
  81. print(d1)
  82. # [[1]
  83. # [4]
  84. # [7]] ==> [[1] [4] [7]]
  85. print(d2)
  86. # [[2]
  87. # [5]
  88. # [8]]
  89. print(d3)
  90. # [[3]
  91. # [6]
  92. # [9]]
  93. d1, d2, d3 = np.vsplit(data, 3)
  94. print(d1)
  95. # [[1 2 3]]
  96. print(d2)
  97. # [[4 5 6]]
  98. print(d3)
  99. # [[7 8 9]]
  100. # np.split(data,3,0) == np.vsplit(data,3)
  101. # np.split(data,3,1) == np.hsplit(data,3)
  102. print('-----------------------------')
  103. data = np.arange(27).reshape(3, 3, 3)
  104. print(data)
  105. # [[[ 0 1 2]
  106. # [ 3 4 5]
  107. # [ 6 7 8]]
  108. #
  109. # [[ 9 10 11]
  110. # [12 13 14]
  111. # [15 16 17]]
  112. #
  113. # [[18 19 20]
  114. # [21 22 23]
  115. # [24 25 26]]]
  116. d1, d2, d3 = np.dsplit(data, 3)
  117. print(d1)
  118. # [
  119. # [
  120. # [ 0]
  121. # [ 3]
  122. # [ 6]
  123. # ]
  124. #
  125. # [
  126. # [ 9]
  127. # [12]
  128. # [15]
  129. # ]
  130. #
  131. # [
  132. # [18]
  133. # [21]
  134. # [24]
  135. # ]
  136. # ]


  1. # 通用函数
  2. array = np.arange(9, dtype=np.int64).reshape(3, 3)
  3. print(array)
  4. # [[0 1 2]
  5. # [3 4 5]
  6. # [6 7 8]]
  7. # 平方
  8. s_arr = np.square(array)
  9. print(s_arr)
  10. # [[ 0 1 4]
  11. # [ 9 16 25]
  12. # [36 49 64]]
  13. # 平方根
  14. print(np.sqrt(s_arr))
  15. # [[ 0. 1. 2.]
  16. # [ 3. 4. 5.]
  17. # [ 6. 7. 8.]]
  18. # e=2.718281 e的x次方
  19. print(np.exp(array))
  20. # [[ 1.00000000e+00 2.71828183e+00 7.38905610e+00]
  21. # [ 2.00855369e+01 5.45981500e+01 1.48413159e+02]
  22. # [ 4.03428793e+02 1.09663316e+03 2.98095799e+03]]
  23. arr1 = np.arange(0, 10)
  24. print(arr1)
  25. # [0 1 2 3 4 5 6 7 8 9]
  26. arr2 = np.array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
  27. print(arr2)
  28. # [9 8 7 6 5 4 3 2 1 0]
  29. # 相同位置取较大的元素
  30. print(np.maximum(arr1, arr2))
  31. # [9 8 7 6 5 5 6 7 8 9]
  32. # 相同位置取较小的元素
  33. print(np.minimum(arr1, arr2))
  34. # [0 1 2 3 4 4 3 2 1 0]
  35. print('-------------------------')
  36. array = np.arange(0, 2, 0.5)
  37. print(array)
  38. # [ 0. 0.5 1. 1.5]
  39. # 分别返回整数和小数
  40. arr1, arr2 = np.modf(array)
  41. print(arr1)
  42. # [ 0. 0.5 0. 0.5]
  43. print(arr2)
  44. # [ 0. 0. 1. 1.]
  45. # 其他还有很多之后用到了,再说吧


新加几个Demo 和函数的用法

  1. # Demo1
  2. points = np.arange(-5, 5)
  3. # points
  4. # [-5 -4 -3 -2 -1 0 1 2 3 4]
  5. xs, ys = np.meshgrid(points, points)
  6. # xs
  7. # [[-5 -4 -3 -2 -1 0 1 2 3 4]
  8. # [-5 -4 -3 -2 -1 0 1 2 3 4]
  9. # [-5 -4 -3 -2 -1 0 1 2 3 4]
  10. # [-5 -4 -3 -2 -1 0 1 2 3 4]
  11. # [-5 -4 -3 -2 -1 0 1 2 3 4]
  12. # [-5 -4 -3 -2 -1 0 1 2 3 4]
  13. # [-5 -4 -3 -2 -1 0 1 2 3 4]
  14. # [-5 -4 -3 -2 -1 0 1 2 3 4]
  15. # [-5 -4 -3 -2 -1 0 1 2 3 4]
  16. # [-5 -4 -3 -2 -1 0 1 2 3 4]]
  17. # ys
  18. # [[-5 -5 -5 -5 -5 -5 -5 -5 -5 -5]
  19. # [-4 -4 -4 -4 -4 -4 -4 -4 -4 -4]
  20. # [-3 -3 -3 -3 -3 -3 -3 -3 -3 -3]
  21. # [-2 -2 -2 -2 -2 -2 -2 -2 -2 -2]
  22. # [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1]
  23. # [ 0 0 0 0 0 0 0 0 0 0]
  24. # [ 1 1 1 1 1 1 1 1 1 1]
  25. # [ 2 2 2 2 2 2 2 2 2 2]
  26. # [ 3 3 3 3 3 3 3 3 3 3]
  27. # [ 4 4 4 4 4 4 4 4 4 4]]
  28. z = np.sqrt(xs ** 2 + ys ** 2)
  29. print(z)
  30. plt.imshow(z, cmap=plt.cm.gray);
  31. plt.colorbar()
  32. plt.title("Image")
  33. plt.show()
  34. # Demo2
  35. xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])
  36. yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])
  37. cond = np.array([True, False, True, True, False])
  38. print(np.where(cond, xarr, yarr))
  39. # [ 1.1 2.2 1.3 1.4 2.5]
  40. # Demo3
  41. arr = np.array([[1, 2, 3], [4, 5, 6]])
  42. # [[1 2 3]
  43. # [4 5 6]]
  44. # 累加 0代表列 1代表行
  45. print(arr.cumsum(0))
  46. # [[1 2 3]
  47. # [5 7 9]]
  48. print(arr.cumsum(1))
  49. # [[ 1 3 6]
  50. # [ 4 9 15]]
  51. # 累乘
  52. print(arr.cumprod(0))
  53. # [[ 1 2 3]
  54. # [ 4 10 18]]
  55. print(arr.cumprod(1))
  56. # [[ 1 2 6]
  57. # [ 4 20 120]]



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/759493
推荐阅读
相关标签
  

闽ICP备14008679号