python - Numpy乘以N维矩阵的一维
问题描述
我有一个 shape 的 3D numpy 数组a
和一个 shape的[M, N, 3]
2D 数组。我想将第 3 维中的 3 个值中的每一个乘以 中的相应值,我目前正在这样做:b
[M, N]
a
b
a[:,:,0] *= b
a[:,:,1] *= b
a[:,:,2] *= b
我想知道是否有一种单行方式来实现这一点。
谢谢!
解决方案
a * b[:,:,np.newaxis]
会这样做:
In [37]: a
Out[37]:
array([[[1, 2, 3],
[4, 5, 6]]])
In [38]: b
Out[38]: array([[4, 5]])
In [39]: a * b[:,:,np.newaxis]
Out[39]:
array([[[ 4, 8, 12],
[20, 25, 30]]])
还有其他表达相同事物的方式,例如
a * np.expand_dims(b, 2)
.a * b[..., np.newaxis]
推荐阅读
- python - 关于从文件中读取数据和将数据写入文件
- docker - 如何创建自定义 Docker 映像并将其用作 GitLab CI/CD 服务?
- gremlin - 尝试使用`with`在gremlin查询上设置唯一请求ID时的空指针
- mysql - MySQL Join 元表(WordPress 样式表结构)
- c - 检查内核模块中打开文件的 SUID 属性
- php - 使用 laravel 进行客户端身份验证和用户身份验证
- javascript - Nuxt 生成,状态 500
- python - 我从网站上抓取了一个视频并下载了它,但视频无法播放
- r - 警告:“在文档对象'FANG'中使用但不在代码中的变量:”
- python - 如何根据另一个数据帧过滤多索引数据帧