我有两个带形状的数组:
z1.shape
(74L, 1L)
z2.shape
(74L,)
为什么在乘法时会产生74x74大小的数组:
z3 = np.multiply(z1,z2)
z3.shape
(74L, 74L)
我期待按元素乘法元素来实现z3的形状(74L,1L)
如何通过z1和z2
的元素乘法实现z3答案 0 :(得分:1)
你可以z1*z2[:,None]
。额外的无索引将1D数组拉伸为列数组。
答案 1 :(得分:1)
做,
z3 = np.multiply(z1, z2.reshape(-1,1))
答案 2 :(得分:1)
要回答您的问题,您需要重塑任一阵列:
>>> np.multiply(z1.reshape(-1), z2).shape
(74,)
>>> np.multiply(z1, z2[:,np.newaxis]).shape
(74, 1)
除非z1, z2
的形状相同,否则乘法(或任何函数)将被转换为外积(z1 * z1.T
),从而形成(74,74)
形状你的情况。在上面的两个例子中,
z1.reshape(-1)
将第一个数组转换为第二个(74,)
的形状; z2[:,np.newaxis]
(或None
代替np.newaxis
)将第二个投射到第一个(74,1)
的形状。