元素对两个不同形状的 numpy 数组中的条目进行函数


设 A 是形状 (a,b,c( 的

numpy 数组,B 是形状 (a',b,c( 的 numpy 数组。设 f(A_,B_( 是一个函数,它将形状 (b,c( 的 numpy 数组A_和形状 (b,c( 的 numpy 数组B_映射到实数。我想构造一个形状为 (a,a'( 的 numpy 数组 C,其中通过将 f 应用于第一个索引上的切片来给出条目。天真的解决方案是

    A=np.reshape(range(2*3*4), (2,3,4))
    B=np.reshape(range(3*3*4), (3,3,4))
    C=np.empty((2,3))
    def f(A_,B_):
      return np.prod(A_)+np.prod(B_)
    for i in range(A.shape[0]):
        for j in range(B.shape[0]):
           C[i,j]=f(A[i],B[j])

返回 C 作为

 [[  0.00000000e+00,   6.47647525e+14,   3.99703747e+17],
  [  6.47647525e+14,   1.29529505e+15,   4.00351395e+17]]

我将把它应用于更大的数组 A,B,其中 f 计算成本很高(上面的 f 只是一个玩具示例(。我通常尽量避免逐元素访问 numpy 数组,但在上述情况下,我不确定如何完成此操作。

对于示例中的维度:

A2 = np.prod(A, axis=2).prod(axis=1)
B2 = np.prod(B, axis=2).prod(axis=1)
Bv, Av = np.meshgrid(B2, A2)
C2 = Av + Bv
array([[                 0,    647647525324800, 399703747322880000],
       [   647647525324800,   1295295050649600, 400351394848204800]])

相关内容

  • 没有找到相关文章

最新更新