Python Numpy:如何在两个具有不同形状的阵列之间计算此乘积?
很抱歉,我的问题的标题听起来可能含糊不清,因为我不知道这种行动的确切名称 给定一个张量Python Numpy:如何在两个具有不同形状的阵列之间计算此乘积?,python,arrays,numpy,array-broadcasting,Python,Arrays,Numpy,Array Broadcasting,很抱歉,我的问题的标题听起来可能含糊不清,因为我不知道这种行动的确切名称 给定一个张量a(N×M×M)和一个一维数组b(N),我想得到另一个张量b(N×M×M),b中的每一项(M×M)都是a和b之间的乘法 一个可能但难看的解决方案是首先展平(重塑)A,即将A转换为二维数组,然后应用点操作,最后重塑回来 在numpy中是否有标准/简单的操作来实现这一点 比如说, A = np.ones(12).reshape(3, 2, 2) b = np.array([2, 3, 4]) 预期的B为 [[[2
a
(N×M×M)和一个一维数组b
(N),我想得到另一个张量b
(N×M×M),b
中的每一项(M×M)都是a
和b
之间的乘法
一个可能但难看的解决方案是首先展平(重塑)A
,即将A
转换为二维数组,然后应用点
操作,最后重塑回来
在numpy
中是否有标准/简单的操作来实现这一点
比如说,
A = np.ones(12).reshape(3, 2, 2)
b = np.array([2, 3, 4])
预期的B
为
[[[2, 2],
[2, 2]],
[[3, 3],
[3, 3]],
[[4, 4],
[4, 4]]]
你要找的是;换句话说,在某些维度中使用值
1
重塑数组b
,以便更好地控制将要发生的事情;b
中的元素总数将保持不变,但您可以选择数组在算术运算期间的行为方式:
A*b.reshape((3,1,1))
我是否可以使用更优雅的函数,比如
扩展_dims
,而不是为b
重塑
?因为b
是一维的,我们可以编写b[:,np.newaxis][:,np.newaxis]
。我们能简化一下吗?@陈中普重塑方法有什么问题?你可以看看np.至少2d
和np.至少3d
但我不确定你会得到什么更简单的东西。任何添加两个新的尾随维度的东西都可以。目标是一个形状为(3,1,1)的数组。