NumPy nancumprod – 完整指南

您好,欢迎来到Numpy nancumprod教程在之前的教程中,我们了解了NumPy cumprod在本教程中,我们将学习NumPy nancumprod()方法,并看到很多相关示例。那么让我们开始吧!

推荐阅读:NumPy cumprod – 完整指南 NumPy nanprod – 完整指南


什么是 NumPy nancumprod?

在 Python 中,NaN表示不是数字如果我们有一个包含一些 NaN 值的数组,并且想要找到其累积乘积,我们可以使用 nancumprod() NumPy 中的方法。累积乘积是  给定序列的部分乘积的序列。如果 {a, b, c, d, e, f,…..} 是一个序列,则其累积乘积表示为 {a, a*b, a*b*c, a*b*c*d,… .} .

NumPy 中的方法 nancumprod() 是一个函数,返回将数组中的 NaN 值视为等于 1 计算得到的数组元素的累积乘积。它可以是展平数组的累积乘积,即数组元素沿行或沿列的数组元素的累积乘积。 

我们将在本教程的后续部分中看到每个示例的示例。


NumPy nancumprod 的语法

numpy.nancumprod(a, axis=None, dtype=None, out=None)
范围 描述 必需/可选
A 输入数组。 必需的
计算数组累积乘积的轴。它可以是 axis=0 或 axis=1 或 axis=None ,这意味着要返回展平数组的累积乘积。 选修的
dtype(数据类型) 要返回的数组的数据类型。 选修的
出去 用于放置结果的替代输出数组。它必须具有与预期输出相同的形状和长度。 选修的

返回:
包含输出的新数组。如果 提到了out  ,则返回对其的引用。


numpy.nancumprod() 方法的示例

现在让我们通过一些示例来了解如何使用此功能。

单个元素的累积乘积

import numpy as np
 
a = 10
ans = np.nancumprod(a)
print("a =", a)
print("Cumulative product =", ans)

输出:

a = 10
Cumulative product = [10]

包含 NaN 的一维数组的累积乘积

import numpy as np
 
a = [5, np.nan, 10, np.nan, np.nan, 2]
ans = np.nancumprod(a)
print("a =", a)
print("Cumulative product =", ans)

输出:

a = [5, nan, 10, nan, nan, 2]
Cumulative product = [  5.   5.  50.  50.  50. 100.]

在上面的代码中,数组包含 3 个 NaN 值。

在计算乘积时,该 nancumprod() 函数将该 NaN 值视为 1,并将累积乘积计算为 5, 5*, 5*1*10, 5*1*10*1, 5*1*10*1*1, 5* 1*10*1*1*2 结果为 5、5、50、50、50、100。


包含 NaN 的二维数组的累积乘积

import numpy as np
 
a = [[3, np.nan, 6], [8, np.nan, np.nan]]
ans = np.nancumprod(a)
print("a =", a)
print("Cumulative product =", ans)

输出:

a = [[3, nan, 6], [8, nan, nan]]
Cumulative product = [  3.   3.  18. 144. 144. 144.]

对于二维数组,当没有提到轴时,首先将数组展平,然后将 NaN 视为 1 来计算其累积乘积。

在上面的例子中,数组首先被展平为 [3, np.nan, 6, 8, np.nan, np.nan] 即按行,然后其累积乘积计算为 [3, 3*1, 3 *1*6, 3*1*6*8, 3*1*6*8,*1, 3*1*6*8,*1*1] 得到数组 [3, 3, 18, 144 , 144, 144] 由函数返回。


沿轴的累积积将 NaN 视为 1

轴 = 0

import numpy as np
 
a = [[5, 2, np.nan], [10, np.nan, 3]]
# cumulative product along axis=0
ans = np.nancumprod(a, axis=0)
print("a =\n", a)
print("Cumulative product =\n", ans)

输出:

a =
 [[5, 2, nan], [10, nan, 3]]
Cumulative product =
 [[ 5.  2.  1.]
 [50.  2.  3.]]

将 NaN 视为 1,第一行保持原样。第二行包含计算为5*10、2*1、1*3的累积乘积,即50、2和3。即,累积乘积是按列计算的并以行的形式存储。

轴 = 1

import numpy as np
 
a = [[5, 2, np.nan], [10, np.nan, 3]]
# cumulative product along axis=1
ans = np.nancumprod(a, axis=1)
print("a =\n", a)
print("Cumulative product =\n", ans)

输出:

a =
 [[5, 2, nan], [10, nan, 3]]
Cumulative product =
 [[ 5. 10. 10.]
 [10. 10. 30.]]

此处,第一列保持原样,第二列包含计算为 5*2, 10*1 的累积乘积,结果为 10, 10,第三列包含累积乘积 5*2*1, 10*1* 3即10和30。即按行计算累加积,并以列的形式存储。


概括

就这样!在本教程中,我们了解了 Numpy nancumprod 方法,并使用该方法练习了不同类型的示例。


参考