Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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
Python Numpy:如何在两个具有不同形状的阵列之间计算此乘积?_Python_Arrays_Numpy_Array Broadcasting - Fatal编程技术网

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)的数组。