Numpy numpy.cumsum函数
numpy.cumsum()函数可以对给定数组其中的元素进行累加操作,返回一个新的数组,其元素为原数组对应位置的前缀和。具体来说,该函数会对数组的第一个元素就行累加,直到最后一个元素。例如:
import numpy as np
a = np.array([1, 2, 3, 4, 5])
b = np.cumsum(a)
print(b) # 输出 [ 1 3 6 10 15]
这里,我们定义了一个一维数组,调用cumsum函数后得到了一个新的数组b,它的元素是原数组a中对应元素的前缀和。也就是说,b[0] = a[0],b[1] = a[0] + a[1],b[2] = a[0] + a[1] + a[2]以此类推。
注意:cumsum函数默认使用float64类型处理数据,如果输入的数组是整数数组,则返回值会转换为浮点类型。
阅读更多:Numpy 教程
numpy.cumprod函数
numpy.cumprod()函数可以对给定数组其中的元素进行累乘操作,返回一个新的数组,其元素为原数组对应位置的前缀积。具体来说,该函数会对数组的第一个元素进行累乘,直到最后一个元素。例如:
import numpy as np
a = np.array([1, 2, 3, 4, 5])
b = np.cumprod(a)
print(b) # 输出 [ 1 2 6 24 120]
这里,我们定义了一个一维数组,调用cumprod函数后得到了一个新的数组b,它的元素是原数组a中对应元素的前缀积。也就是说,b[0] = a[0],b[1] = a[0] * a[1],b[2] = a[0] * a[1] * a[2]以此类推。
numpy.diff函数
numpy.diff()函数计算给定数组中相邻元素之间的差值,返回一个新的数组,其元素为相邻元素之间的差值。默认情况下,diff函数计算后的数组比原数组少了一个元素,例如:
import numpy as np
a = np.array([1, 4, 7, 11])
b = np.diff(a)
print(b) # 输出 [3 3 4]
这里,我们定义了一个一维数组,调用diff函数后得到了一个新的数组b,它的元素是原数组a中相邻元素之间的差值。也就是说,b[0] = a[1] - a[0],b[1] = a[2] - a[1],b[2] = a[3] - a[2]。
如果想要计算多阶差分(即相邻k个元素之间的差值),可以通过设置n参数来实现。例如,当n=2时,numpy.diff相当于计算原数组的二阶差分,即同时计算每相邻3个元素之间的差值:
a = np.array([1, 4, 7, 11])
b = np.diff(a, n=2)
print(b) # 输出 [ 0 1 -1]
numpy.ediff1d函数
numpy.ediff1d()函数对给定的一维数组进行差分操作,返回一个新的数组,其元素为相邻元素之间的差值。与diff函数类似,不过ediff1d不计算相邻元素之间的差值,而是计算原数组中所有元素之间的差值(即相邻元素与非相邻元素之间的差值)。例如:
import numpy as np
a = np.array([1, 4, 7, 11])
b = np.ediff1d(a)
print(b) # 输出 [3 3 4]
这里,我们定义了一个一维数组,调用ediff1d函数后得到了一个新的数组b,它的元素是原数组a中相邻元素和非相邻元素之间的差值。也就是说,b[0] = a[1] - a[0],b[1] = a[2] - a[1],b[2] = a[3] - a[2]。
与diff函数一样,ediff1d函数也可以通过设置n参数来计算多阶差分。不同的是,ediff1d函数只能计算非相邻元素之间的差值,所以n=1时,与没有设置n参数时得到的结果相同。
numpy.gradient函数
numpy.gradient()函数计算给定数组中相邻元素之间的变化率,返回一个新的数组,其元素为相邻元素之间的变化率。具体来说,该函数会计算每个元素和其相邻元素的变化率,然后放入一个数组中返回。例如:
import numpy as np
a = np.array([1, 4, 7, 11])
b = np.gradient(a)
print(b) # 输出 [3. 2.5 2.5 4. ]
这里,我们定义了一个一维数组,调用gradient函数后得到了一个新的数组b,它的元素是原数组a中每个元素和它相邻元素的变化率。也就是说,b[0] = (a[1]-a[0])/1,b[1] = (a[2]-a[0])/2,b[2] = (a[3]-a[1])/2,b[3] = (a[3]-a[2])/1。
与diff函数一样,gradient函数也可以通过设置n参数来计算多阶差分。不同的是,gradient函数计算的是变化率,而不是差值。
总结
在NumPy中,cumsum、cumprod、diff、ediff1d和gradient函数可以用于计算数组元素的累加、累乘、差分、非相邻差分和变化率。这些函数都是很实用的,可以帮助我们快速计算数组中的一些统计信息。在使用这些函数时,我们需要了解它们的参数和返回值的含义,避免出现错误。在掌握了这些函数的使用方法之后,我们可以更加方便地处理和分析数组数据。
极客教程