首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python理解数组乘法行为

python理解数组乘法行为
EN

Stack Overflow用户
提问于 2016-05-24 19:03:40
回答 3查看 90关注 0票数 1

我有两个具有形状的数组:

代码语言:javascript
运行
复制
z1.shape
(74L, 1L)

z2.shape
(74L,)

为什么乘法时它会产生74x74大小的数组:

代码语言:javascript
运行
复制
z3 = np.multiply(z1,z2)
z3.shape
(74L, 74L)

我期待着一个一个元素的乘法来实现形状的z3 (74L,1L)。

如何实现z3作为元素的z1和z2的元素乘法

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-24 19:13:49

你可以做z1*z2[:,None]。额外的无索引将一维数组扩展为列数组。

票数 1
EN

Stack Overflow用户

发布于 2016-05-24 19:13:56

就这么做,

代码语言:javascript
运行
复制
z3 = np.multiply(z1, z2.reshape(-1,1))
票数 1
EN

Stack Overflow用户

发布于 2016-05-24 19:14:34

要回答您的问题,您需要重新调整任何一个数组:

代码语言:javascript
运行
复制
>>> 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)的形状。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37421845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档