Arrays 两个不同形状的numpy数组中项上的元素函数
设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应用于第一个索引上的切片来提供条目。 天真的解决办法是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=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的单独使用。