您好,欢迎来到Numpy nancumsum教程 。在之前的教程中,我们学习了NumPy cumsum和NumPy nansum。在本教程中,我们将学习 NumPy nancumsum() 方法,并看到许多相关示例。那么让我们开始吧!
推荐阅读:NumPy cumsum、 NumPy nansum
什么是 NumPy nancumsum?
在 Python 中, NaN 表示 不是数字。如果我们有一个包含一些 NaN 值的数组并且想要找到它的累积和,我们可以使用 nancumsum()
NumPy 中的方法。
累积 和 是给定序列的部分和的序列。如果 {a, b, c, d, e, f,…..} 是一个序列,则其累积和表示为 {a, a+b, a+b+c, a+b+c+d,… .} .
NumPy中的方法 nancumsum()
是一个函数,返回将数组中的NaN值视为等于0计算出的数组元素的累积和。它可以是展平数组的累积和,也可以是数组元素沿行或沿列的数组元素的累积和。
我们将在本教程的后续部分中看到每个示例的示例。
NumPy nancumsum 的语法
numpy.nancumsum(a, axis = None , dtype = None , out = None ) |
范围 | 描述 | 必需/可选 |
A | 输入数组。 | 必需的 |
轴 | 计算数组累积和的轴。它可以是 axis=0 或 axis=1 或 axis=None ,这意味着要返回展平数组的累积和。 | 选修的 |
dtype(数据类型) | 要返回的数组的数据类型。 | 选修的 |
出去 | 用于放置结果的替代输出数组。它必须具有与预期输出相同的形状和长度。 | 选修的 |
返回:
包含输出的新数组,即通过将 NaN 值视为等于零的累积和。如果 提到了out ,则返回对其的引用。
numpy.nancumsum() 方法示例
现在让我们通过一些示例来了解如何使用此功能。
单个元素的累计和
import numpy as np a = 8 ans_a = np.nancumsum(a) b = np.nan ans_b = np.nancumsum(b) print ( "a =" , a) print ( "Cumulative sum of a =" , ans_a) print ( "b =" , b) print ( "Cumulative sum of b =" , ans_b) |
输出:
a = 8 Cumulative sum of a = [8] b = nan Cumulative sum of b = [0.] |
包含 NaN 的一维数组的累积和
import numpy as np arr = [ 7 , 8 , np.nan, 10 , np.nan, np.nan] ans = np.nancumsum(arr) print ( "arr =" , arr) print ( "Cumulative sum of arr =" , ans) |
输出:
arr = [7, 8, nan, 10, nan, nan] Cumulative sum of arr = [ 7. 15. 15. 25. 25. 25.] |
在上面的代码中,数组包含 3 个 NaN 值。在计算累积和时,该nancumsum()
方法将这些值视为等于零。因此,累积和计算为 7, 7+8, 7+8+0, 7+8+0+10, 7+8+0+10+0, 7+8+0+10+0+0结果是 7, 15, 15, 25, 25, 25。
包含 NaN 的二维数组的累积和
import numpy as np arr = [[ 5 , np.nan, 3 ], [np.nan, 2 , 1 ]] ans = np.nancumsum(arr) print ( "arr =" , arr) print ( "Cumulative sum of arr =" , ans) |
输出:
arr = [[5, nan, 3], [nan, 2, 1]] Cumulative sum of arr = [ 5. 5. 8. 8. 10. 11.] |
对于二维数组,当没有提到轴时,首先将数组展平,然后将 NaN 视为 0 来计算其累积和。
在上面的例子中,数组首先被展平为 [5, np.nan, 3, np.nan, 2, 1] 即按行,然后其累积和计算为 [5, 5+0, 5+0 +3, 5+0+3+0, 5+0+3+0+2, 5+0+3+0+2+1] 得到数组 [5, 5, 8, 8, 10, 11 ] 由函数返回。
沿轴的累积和将 NaN 视为 0
轴=0
import numpy as np arr = [[ 8 , np.nan, 6 ], [np.nan, 10 , 20 ]] # cumulative sum along axis=0 ans = np.nancumsum(arr, axis = 0 ) print ( "arr =\n" , arr) print ( "Cumulative sum of arr =\n" , ans) |
输出:
arr = [[8, nan, 6], [nan, 10, 20]] Cumulative sum of arr = [[ 8. 0. 6.] [ 8. 10. 26.]] |
将 NaN 视为 0,第一行保持原样。第二行包含计算为8+0、0+10、6+20即8、10和26的累积和。即,累积和是按列计算并以行的形式存储的。
轴=1
import numpy as np arr = [[ 8 , np.nan, 6 ], [np.nan, 10 , 20 ]] # cumulative sum along axis=1 ans = np.nancumsum(arr, axis = 1 ) print ( "arr =\n" , arr) print ( "Cumulative sum of arr =\n" , ans) |
输出:
arr = [[8, nan, 6], [nan, 10, 20]] Cumulative sum of arr = [[ 8. 8. 14.] [ 0. 10. 30.]] |
此处,第一列保持原样,第二列包含计算为 8+0, 0+10 的累积和,结果为 8, 10,第三列包含累积和 8+0+6, 0+10+ 20即14和30。即按行计算累加和并以列的形式存储。
结论
就这样!在本教程中,我们了解了 Numpy nancumsum 方法,并使用该方法练习了不同类型的示例。您可以从此处的 NumPy 教程了解有关 NumPy 的更多信息。