当前位置: 首页 > 面试题库 >

NumPy / SciPy中的广义累积函数?

江天宇
2023-03-14
问题内容

numpy或scipy(或其他库)中是否有一个函数将cumsum和cumprod的概念推广为任意函数。例如,考虑(理论上的)函数

cumf( func, array)

func是一个接受两个浮点数并返回一个浮点数的函数。特殊情况

lambda x,y: x+y

lambda x,y: x*y

分别是cumsum和cumprod。例如,如果

func = lambda x,prev_x: x^2*prev_x

我将其应用于:

cumf(func, np.array( 1, 2, 3) )

我想要

np.array( 1, 4, 9*4 )

问题答案:

NumPy的ufunc有accumulate()

In [22]: np.multiply.accumulate([[1, 2, 3], [4, 5, 6]], axis=1)
Out[22]: 
array([[  1,   2,   6],
       [  4,  20, 120]])

不幸的是,呼吁accumulate()frompyfunc()“编Python函数失败,一个奇怪的错误:

In [32]: uadd = np.frompyfunc(lambda x, y: x + y, 2, 1)

In [33]: uadd.accumulate([1, 2, 3])
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)

ValueError: could not find a matching type for <lambda> (vectorized).accumulate, 
            requested type has type code 'l'

这是将NumPy 1.6.1与Python 2.7.3结合使用。



 类似资料:
  • 问题内容: 我想用NumPy创建CDF,下面是我的代码: 我正在阵列旁走,但是需要很长时间执行程序。这个功能有一个内置的功能,不是吗? 问题答案: 我不太确定您的代码在做什么,但是如果您有和返回的数组,则可以用来生成直方图内容的累积和。

  • 对于并行处理,Apache Spark使用共享变量。 当驱动程序将任务发送到集群上的执行程序时,共享变量的副本将在集群的每个节点上运行,以便可以将其用于执行任务。 Apache Spark支持两种类型的共享变量 - Broadcast Accumulator 让我们详细了解它们。 广播(Broadcast) 广播变量用于跨所有节点保存数据副本。 此变量缓存在所有计算机上,而不是在具有任务的计算机上

  • 我有两个不同长度的向量,每个向量包含0到50之间的数字。有些数字在向量中不包含,其他数字可能出现多次。 我想画一条线,显示每个数字在每个向量中包含的频率,即数字的频率。 如果我将中断设置为每个可能的数字之间,我可以绘制显示频率的直方图: 我知道有一个经验累积分布函数(),它会形成一个S形;但我想要的是一个非累积的经验分布函数,它将导致类似阶梯形钟形曲线的结果,类似于直方图的轮廓。 我能得到的最接近

  • 我尝试过用这个方法来计算累积值,但是如果日期字段与累积字段中的值相同,那么有人能提出类似于这个问题的解决方案吗

  • 问题内容: 我非常沮丧,因为几个小时后,我似乎无法在python中执行看似简单的3D插值。在Matlab中,我要做的就是 使用scipy的ndimage.map_coordinate或其他numpy方法的确切含义是什么? 谢谢 问题答案: 在scipy 0.14或更高版本中,有一个非常相似的新功能。 MATLAB命令将转换为以下内容: 这是一个完整的例子,展示了两者。它将帮助您了解确切的区别… M

  • 主要内容:单积分,多重积分,双重积分当一个函数不能被分析积分,或者很难分析积分时,通常会转向数值积分方法。 SciPy有许多用于执行数值积分的程序。 它们中的大多数都在同一个库中。 下表列出了一些常用函数。 编号 示例 描述 1 单积分 2 二重积分 3 三重积分 4 n倍多重积分 5 高斯积分,阶数 6 高斯正交到容差 7 Romberg积分 8 梯形规则 9 梯形法则累计计算积分 10 辛普森的规则 11 Romberg积分 1