Press "Enter" to skip to content

NumPy如何计算列表中所有数字的累乘或者累加

np.cumprod() # 累乘函数用于计算给定轴上数组元素的累乘
np.cumsum() # 累加函数用于计算给定轴上数组元素的累加

语法:

np.cumprod(arr, axis=None, dtype=None, out=None)

arr :[数组]包含需要累积乘积的数字的数组。如果arr不是数组,则尝试进行转换,数组为list。

axis :计算累积乘积的轴。默认值是计算展平数组的乘积。

dtype :返回数组的类型,以及与元素相乘的累加器的类型。如果未指定dtype,则默认为arr的dtype,除非arr的整数dtype的精度小于默认平台整数的精度。在这种情况下,将使用默认平台整数。

out :[ndarray,可选]将结果存储到的位置。

注意:累乘和累加的用法是一样的。

例子:

第一种情况:axis=0按列计算累积

import numpy as np


list1 = np.array([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
])


result1 = np.cumprod(list1, axis=0) # axis=0 按列计算累积

print(result1)

返回的结果:

[[  1   2   3]
 [  4  10  18]
 [ 28  80 162]]

第二种情况:axis=1按行计算累积

list2 = np.array([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
])


result2 = np.cumprod(list2, axis=1) # axis=1按行计算累积

print(result2)

返回的结果:

[[  1   2   6]
 [  4  20 120]
 [  7  56 504]]

第三种情况:axis=None,整体计算累积

list3 = np.array([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
])


result3 = np.cumprod(list3) # 默认参数axis=None,整体计算累积

print(result3)

返回的结果:

[     1      2      6     24    120    720   5040  40320 362880]

此时,如果我想在list1里面的列表每一个元素都+1怎么办呢?

其实很简单,只需要在矩阵中所有元素+1就可以,如:

list1 = np.array([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
]) +1

print(list1)

返回结果:

[[ 2  3  4]
 [ 5  6  7]
 [ 8  9 10]]

拓展知识:

numpy.prod()函数:用来计算所有元素的乘积

numpy.sum()函数:用来计算所有元素的和

这两个函数的用法跟np.cumprod()和np.cumsum()是一样的

发表评论

您的电子邮箱地址不会被公开。