叠加列向量和数组

2024-09-27 21:31:31 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个列向量

B = [[5], 
     [7]]

和一个数组

A = [[1, 1, 1, 1], 
     [247, 121, 1, 314]]

我想要的是将A的顶行与其B的对应行(对于底行也是如此)耦合,然后对这些对上的函数func(a,b)求值。例如,如果函数是scipy.special.betaln,我想计算如下

C = [[betaln(1,5)  , betaln(1,5)  , betaln(1,5), betaln(1,5)  ]
     [betaln(247,7), betaln(121,7), betaln(1,7), betaln(314,7)]]

由此产生:

C = [[-1.609 , -1.609  , -1.609, -1.609 ]
     [-32.070, -27.1618, -1.945, -33.732]]

实际上,我将有一个数组,其中包含大约27000列和行,从几行到几百行。因此,B也将是长度为1或2到几百的向量。我一直坚持这一点,我不知道什么是最好的(快速)方式做这件事。我在tensorflow上这样做,因此A和B是张量,但是numpy数组也可以正常工作。(或者发电机?我不知道……)

谢谢!你知道吗


Tags: 函数numpytensorflow方式scipy数组向量发电机
1条回答
网友
1楼 · 发布于 2024-09-27 21:31:31

^{}ufunc,这意味着它可以接受数组(在本例中,甚至是列表列表)作为输入。AB中的值将自动为broadcasted

In [205]: special.betaln([[1, 1, 1, 1], [247, 121, 1, 314]], [[5], [7]])
Out[205]: 
array([[ -1.60943791,  -1.60943791,  -1.60943791,  -1.60943791],
       [-32.0707512 , -27.16180903,  -1.94591015, -33.73292188]])

对整个数组调用betaln一次要比对每对标量值多次调用betaln快得多。你知道吗

相关问题 更多 >

    热门问题