python - 来自数组的 Numpy,为每个元素创建一个矩阵 N*M,所有值都设置为没有 for 循环的元素
问题描述
我有一个像 np.array([1, 2, 3]) 这样的 numpy 数组
不使用 for 循环而只使用 numpy 或 pytorch 方法,我想要一个维度为 len(array) * N * M 的矩阵,由矩阵 N*M 组成,第一个矩阵由所有矩阵组成,第二个矩阵仅由两个值和第三仅由 3 个值。
例如
N = 4 M = 3
[[[1,1,1,1],[1,1,1,1],[1,1,1,1]],
[[2,2,2,2],[2,2,2,2],[2,2,2,2]],
[[3,3,3,3],[3,3,3,3],[3,3,3,3]]]
我尝试了不同的方法来实现这个矩阵,比如 unsqueeze 和 repeat 但我找不到解决方案,有什么建议吗?
解决方案
干得好:
np.ones((len(a),M,N)) * a[:,None,None]
或者没有乘法:
np.full((len(a),M,N), a[:,None,None])
输出:
array([[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]],
[[2., 2., 2., 2.],
[2., 2., 2., 2.],
[2., 2., 2., 2.]],
[[3., 3., 3., 3.],
[3., 3., 3., 3.],
[3., 3., 3., 3.]]])
请注意此处的形状以及您预期输出中给出的形状是len(a) * M * N
,而不是len(a) * N * M
。M,N
有np.ones
需要就换。
推荐阅读
- r - 如果另一个变量中的值在 dplyr 的列表中没有匹配项,则删除一个变量中的值
- javascript - React Native - 如何永久禁止用户
- javascript - 如何将数据绑定到多选?
- node.js - express-validator 并在错误后填充输入字段
- mysql - IN 子句在 MYSQL 触发器中的 WHERE 条件下不起作用
- python - 如何使用来自分组的统计信息将列添加到数据框中
- java - 如何将日期时间字段保存到 cosmosdb“SQL API / DocumentDb”?
- javascript - 移动浏览器中后退按钮后的事件
- flutter - 如何更改 CupertinoDatePicker 的背景颜色
- mongodb - 这个关于在 MongoDB 中预填充数据的提示是否正确?