Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 两个不同形状的numpy数组中项上的元素函数_Arrays_Numpy_Multidimensional Array_Linear Algebra - Fatal编程技术网

Arrays 两个不同形状的numpy数组中项上的元素函数

Arrays 两个不同形状的numpy数组中项上的元素函数,arrays,numpy,multidimensional-array,linear-algebra,Arrays,Numpy,Multidimensional Array,Linear Algebra,设A是形状A,b,c的numpy数组,b是形状A',b,c的numpy数组。设fA_u,B_u是一个函数,它将形状为B,c的numpy数组a_u和形状为B,c的numpy数组B_u映射为实数。我想构造一个形状为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

设A是形状A,b,c的numpy数组,b是形状A',b,c的numpy数组。设fA_u,B_u是一个函数,它将形状为B,c的numpy数组a_u和形状为B,c的numpy数组B_u映射为实数。我想构造一个形状为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]])

你能更一致地描述尺寸吗?我看到a',d,e和f的单独使用。