我有两个具有形状的数组:
z1.shape
(74L, 1L)
z2.shape
(74L,)为什么乘法时它会产生74x74大小的数组:
z3 = np.multiply(z1,z2)
z3.shape
(74L, 74L)我期待着一个一个元素的乘法来实现形状的z3 (74L,1L)。
如何实现z3作为元素的z1和z2的元素乘法
发布于 2016-05-24 19:13:49
你可以做z1*z2[:,None]。额外的无索引将一维数组扩展为列数组。
发布于 2016-05-24 19:13:56
就这么做,
z3 = np.multiply(z1, z2.reshape(-1,1))发布于 2016-05-24 19:14:34
要回答您的问题,您需要重新调整任何一个数组:
>>> 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)的形状。https://stackoverflow.com/questions/37421845
复制相似问题